Compléments sur les implémentations de la skolémisation en regardant ce qui se fait chez
Apache Jena : le commentaire reflète la nature polémique qu'a toujours véhiculé cette notion. On notera d'ailleurs que la discussion du groupe W3C chargé de normaliser le concept s'est terminée en queue de poisson. À souligner que chez le W3C la controverse ne portait pas sur ce qu'est la skolémisation, tout le monde était d'accord que ça porte sur des bnodes. Andy Seaborne écrit "Skolemization of blank nodes to IRIs : Don't ask, just don't ask." sans doute pour éviter de réveiller la controverse.
Blazegraph : ça c'est l'outil actuel qu'on trouve sur le nœud SPARQL de WikiData. Dans la javadoc, Brad Bebee écrit que l'outil génère des UUIDs pour les bnodes. Ailleurs dans le code, il est précisé comment on retrouve le même UUID pour un bnode donné après (dé-)sérialisation. Je lie le code source pour mémoire.
RDFLib : pour essayer de casser la monoculture Java évoquée par ailleurs, je mentionne cette lib écrite en Python (voir aussi le point ici-bas) ; dans le code lié, le nom de la méthode est des plus explicites et se passe de commentaire !
rdf4h : un paquet écrit en Haskell. Le commentaire de Rob Stewart sur la comparaison de bnodes est très intéressant, je le cite en le traduisant : « J'hésite à tester l'égalité entre des bnodes normaux et des bnodes générés automatiquement parce qu'un bnode qui a été sérialisé est parsé tel quel1. L'autre facteur de doute est que chaque parseur RDF est libre de choisir son format pour les bnodes.»
Eh bien ! revenons aux fondamentaux en rebondissant sur ce qu'écrit R.S. Dans le Mallea et al. déjà mentionné deux fois ailleurs dans les commentaires2, dans la sous-section 4.1, on peut lire ceci sous l'intertitre "Issues with blank nodes" : « Les stratégies de parsing de bnodes à partir d'un graphe sérialisé, i.e. un document, varient suivant le parseur considéré et dans le temps. La conséquence en est que pour vérifier si deux graphes proviennent d'une même source, on sera obligé de prouver un isomorphisme or on ne connait pas d'algorithmes généraux à complexité polynomiale répondant à cette tâche. » Cela est écrit bien sûr après une section explicitant sur quoi porte la skolémisation.
En somme, je crois que j'ai apporté suffisamment d'eléments sur la skolémisation en RDF. Jusqu'à maintenant, je n'ai vu aucune source melant cette notion avec les graph patterns et les opérateurs qui leur sont applicables.
Dans le parseur, il n'y a pas de risque de créer une IRI valide à partir de quelque chose qui avait été sauvegardée à partir d'un bnode. ↩
C'est un article bien écrit et qui fait un tour quasi-exhaustif de la question des bnodes, à lire sans modération ! ↩
[^] # Re: Euh ???
Posté par gipoisson . En réponse à la dépêche SPARQL, le SQL du Web, et Linked Data Fragment : le point sur le requêtage du Web. Évalué à 1.
Compléments sur les implémentations de la skolémisation en regardant ce qui se fait chez
Apache Jena : le commentaire reflète la nature polémique qu'a toujours véhiculé cette notion. On notera d'ailleurs que la discussion du groupe W3C chargé de normaliser le concept s'est terminée en queue de poisson. À souligner que chez le W3C la controverse ne portait pas sur ce qu'est la skolémisation, tout le monde était d'accord que ça porte sur des bnodes. Andy Seaborne écrit "Skolemization of blank nodes to IRIs : Don't ask, just don't ask." sans doute pour éviter de réveiller la controverse.
Blazegraph : ça c'est l'outil actuel qu'on trouve sur le nœud SPARQL de WikiData. Dans la javadoc, Brad Bebee écrit que l'outil génère des
UUIDs pour les bnodes. Ailleurs dans le code, il est précisé comment on retrouve le mêmeUUIDpour un bnode donné après (dé-)sérialisation. Je lie le code source pour mémoire.RDFLib : pour essayer de casser la monoculture Java évoquée par ailleurs, je mentionne cette lib écrite en Python (voir aussi le point ici-bas) ; dans le code lié, le nom de la méthode est des plus explicites et se passe de commentaire !
rdf4h : un paquet écrit en Haskell. Le commentaire de Rob Stewart sur la comparaison de bnodes est très intéressant, je le cite en le traduisant : « J'hésite à tester l'égalité entre des bnodes normaux et des bnodes générés automatiquement parce qu'un bnode qui a été sérialisé est parsé tel quel1 . L'autre facteur de doute est que chaque parseur RDF est libre de choisir son format pour les bnodes.»
Eh bien ! revenons aux fondamentaux en rebondissant sur ce qu'écrit R.S. Dans le Mallea et al. déjà mentionné deux fois ailleurs dans les commentaires2 , dans la sous-section 4.1, on peut lire ceci sous l'intertitre "Issues with blank nodes" : « Les stratégies de parsing de bnodes à partir d'un graphe sérialisé, i.e. un document, varient suivant le parseur considéré et dans le temps. La conséquence en est que pour vérifier si deux graphes proviennent d'une même source, on sera obligé de prouver un isomorphisme or on ne connait pas d'algorithmes généraux à complexité polynomiale répondant à cette tâche. » Cela est écrit bien sûr après une section explicitant sur quoi porte la skolémisation.
En somme, je crois que j'ai apporté suffisamment d'eléments sur la skolémisation en RDF. Jusqu'à maintenant, je n'ai vu aucune source melant cette notion avec les graph patterns et les opérateurs qui leur sont applicables.
Dans le parseur, il n'y a pas de risque de créer une IRI valide à partir de quelque chose qui avait été sauvegardée à partir d'un bnode. ↩
C'est un article bien écrit et qui fait un tour quasi-exhaustif de la question des bnodes, à lire sans modération ! ↩