Indicateurs de requête SPARQL utilisés avec DESCRIBE - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Indicateurs de requête SPARQL utilisés avec DESCRIBE

Une requête SPARQL DESCRIBE fournit un mécanisme flexible permettant de demander des descriptions de ressources. Cependant, les spécifications SPARQL ne définissent pas la sémantique précise de DESCRIBE.

À partir de la version 1.2.0.2 du moteur, Neptune prend en charge plusieurs modes et algorithmes DESCRIBE adaptés à différentes situations.

Cet exemple de jeu de données permet d'illustrer les différents modes :

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix : <https://example.com/> . :JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JohnDoe :firstName "John" . :JaneDoe :knows _:b1 . _:b1 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . :RichardRoe :firstName "Richard" . _:s1 rdf:type rdf:Statement . _:s1 rdf:subject :JaneDoe . _:s1 rdf:predicate :knows . _:s1 rdf:object :JohnDoe . _:s1 :knowsFrom "Berlin" . :ref_s2 rdf:type rdf:Statement . :ref_s2 rdf:subject :JaneDoe . :ref_s2 rdf:predicate :knows . :ref_s2 rdf:object :JohnDoe . :ref_s2 :knowsSince 1988 .

Les exemples ci-dessous supposent qu'une description de la ressource :JaneDoe est demandée à l'aide d'une requête SPARQL comme celle-ci :

DESCRIBE <https://example.com/JaneDoe>

Indicateur de requête describeMode SPARQL

L'indicateur de requête hint:describeMode SPARQL est utilisé pour sélectionner l'un des modes DESCRIBE SPARQL suivants pris en charge par Neptune :

Mode ForwardOneStep DESCRIBE

Vous invoquez le mode ForwardOneStep avec l'indicateur de requête describeMode comme suit :

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "ForwardOneStep" }

Le mode ForwardOneStep renvoie uniquement les attributs et les liens de transfert de la ressource à décrire. Dans le cas de cet exemple, cela signifie qu'il renvoie les triplets dont la ressource à décrire, :JaneDoe, est le sujet :

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b301990159 .

Notez que la requête DESCRIBE peut renvoyer des triplets avec des nœuds vides (par exemple, _:b301990159), qui ont des ID différents à chaque fois par rapport au jeu de données en entrée.

Mode SymmetricOneStep DESCRIBE

SymmetricOneStep est le mode DESCRIBE par défaut si vous ne fournissez aucun indicateur de requête. Vous pouvez également l'invoquer explicitement avec l'indicateur de requête describeMode comme ceci :

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SymmetricOneStep" }

Sous la sémantique SymmetricOneStep, DESCRIBE renvoie les attributs, les liens de transfert et les liens inverses de la ressource à décrire :

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b318767375 . _:b318767631 rdf:subject :JaneDoe . :RichardRoe :knows :JaneDoe . :ref_s2 rdf:subject :JaneDoe .

Mode DESCRIBE CBD (Concise Bounded Description)

Le mode CBD (Concise Bounded Description) est invoqué à l'aide de l'indicateur de requête describeMode suivant :

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "CBD" }

Sous la sémantique CBD, DESCRIBE renvoie la description CBD (telle que définie par le W3C) de la ressource à décrire :

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b285212943 . _:b285212943 :knows :RichardRoe . _:b285213199 rdf:subject :JaneDoe . _:b285213199 rdf:type rdf:Statement . _:b285213199 rdf:predicate :knows . _:b285213199 rdf:object :JohnDoe . _:b285213199 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .

La description CBD d'une ressource RDF (c'est-à-dire un nœud dans un graphe RDF) est le plus petit sous-graphe pouvant être autonome centré sur ce nœud. En pratique, cela signifie que si vous considérez ce graphe comme un arbre, avec le nœud désigné comme racine, il n'y a pas de nœuds vides comme feuilles de cet arbre. Comme les nœuds vides ne peuvent pas être traités de manière externe ni utilisés dans les requêtes ultérieures, il ne suffit pas de parcourir le graphe pour trouver le ou les prochains sauts individuels à partir du nœud actuel. Vous devez également aller assez loin pour trouver ce qui pourra être utilisé dans les requêtes ultérieures (à savoir autre chose qu'un nœud vide).

Calcul de la valeur CBD

Avec un nœud particulier (le nœud ou la racine de départ) dans le graphe RDF source, la valeur CBD de ce nœud est calculée comme suit :

  1. Incluez dans le sous-graphe toutes les déclarations du graphe source dont le sujet de la déclaration est le nœud de départ.

  2. De manière récursive, pour toutes les déclarations du sous-graphe contenant jusqu'à présent un objet de nœud vide, incluez dans le sous-graphe toutes les déclarations du graphe source dont le sujet de la déclaration correspond à ce nœud vide, et qui ne sont pas déjà incluses dans le sous-graphe.

  3. De manière récursive, pour toutes les déclarations incluses dans le sous-graphe jusqu'à présent, pour toutes les réifications de ces déclarations dans le graphe source, incluez la valeur CBD en commençant par le nœud rdf:Statement de chaque réification.

Il en résulte un sous-graphe où les nœuds de l'objet sont soit des références IRI ou des littéraux, soit des nœuds vides ne faisant l'objet d'aucune déclaration dans le graphe. Notez que le CBD ne peut pas être calculé à l'aide d'une seule requête SPARQL SELECT ou CONSTRUCT.

Mode DESCRIBE SCBD (Symmetric Concise Bounded Description)

Le mode SCBD (Symetric Concise Bounded Description) est invoqué à l'aide de l'indicateur de requête describeMode suivant :

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SCBD" }

Sous la sémantique SCBD, DESCRIBE renvoie la description SCBD (telle que définie par le W3C dans Description des jeux de données liés avec le vocabulaire VoID) :

:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b335544591 . _:b335544591 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . _:b335544847 rdf:subject :JaneDoe . _:b335544847 rdf:type rdf:Statement . _:b335544847 rdf:predicate :knows . _:b335544847 rdf:object :JohnDoe . _:b335544847 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .

L'avantage des valeurs CBD et SCBD par rapport aux modes ForwardOneStep et SymmetricOneStep est que les nœuds vides sont toujours étendus pour inclure leur représentation. Cet avantage est de taille, car vous ne pouvez pas interroger un nœud vide à l'aide de SPARQL. En outre, les modes CBD et SCBD prennent également en compte les réifications.

Notez que l'indicateur de requête describeMode peut également faire partie d'une clause WHERE :

PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE ?s WHERE { hint:Query hint:describeMode "CBD" . ?s rdf:type <https://example.com/Person> }

Indicateur de requête describeIterationLimit SPARQL

L'indicateur de requête hint:describeIterationLimit SPARQL fournit une contrainte facultative sur le nombre maximum d'extensions itératives à effectuer pour les algorithmes itératifs DESCRIBE tels que CBD et SCBD.

Les limites du mode DESCRIBE doivent s'appliquer simultanément. Par conséquent, si la limite d'itération et la limite de déclarations sont spécifiées, elles doivent toutes deux être respectées avant que la requête DESCRIBE ne soit interrompue.

La valeur par défaut est 5. Vous pouvez la définir sur ZÉRO (0) pour ne pas spécifier de limite du nombre d'extensions itératives.

Indicateur de requête describeStatementLimit SPARQL

L'indicateur de requête SPARQL hint:describeStatementLimit fournit une contrainte facultative sur le nombre maximum de déclarations pouvant être présentes dans une réponse à une requête DESCRIBE. Il n'est appliqué qu'aux algorithmes itératifs DESCRIBE tels que CBD et SCBD.

Les limites du mode DESCRIBE doivent s'appliquer simultanément. Par conséquent, si la limite d'itération et la limite de déclarations sont spécifiées, elles doivent toutes deux être respectées avant que la requête DESCRIBE ne soit interrompue.

La valeur par défaut est 5 000. Vous pouvez la définir sur ZÉRO (0) pour ne pas limiter le nombre de déclarations renvoyées.