Fonctionnement du moteur de requêtes SPARQL dans Neptune - 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.

Fonctionnement du moteur de requêtes SPARQL dans Neptune

Pour utiliser les informations que le SPARQLexplainfournit des fonctionnalités, vous devez comprendre certains détails sur le fonctionnement du moteur de requêtes Amazon Neptune SPARQL.

Le moteur convertit chaque requête SPARQL en un pipeline d'opérateurs. À partir du premier opérateur, des solutions intermédiaires appelées listes de liaisons circulent dans ce pipeline d'opérateurs. Vous pouvez vous représenter une liste de liaisons sous la forme d'une table dans laquelle les en-têtes sont un sous-ensemble des variables utilisées dans la requête. Chaque ligne de la table représente un résultat, jusqu'au point d'évaluation.

Supposons que deux préfixes d'espace de noms ont été définis pour nos données :

@prefix ex: <http://example.com> . @prefix foaf: <http://xmlns.com/foaf/0.1/> .

L'exemple suivant est un exemple de liste de liaisons simple dans ce contexte :

?person | ?firstName ------------------------------------------------------ ex:JaneDoe | "Jane" ex:JohnDoe | "John" ex:RichardRoe | "Richard"

Pour chacune des trois personnes, la liste lie la variable ?person à un identifiant de la personne, et la variable ?firstName à son prénom.

En règle générale, les variables peuvent rester non liées si, par exemple, il existe une sélection OPTIONAL d'une variable dans une requête pour laquelle aucune valeur n'est présente dans les données.

Dans laPipelineJoinest un exemple d'opérateur de moteur de requête Neptune présent dansexplainSortie. Il prend en tant qu'entrée un ensemble de liaisons entrantes de l'opérateur précédent et le joint selon un modèle de triplet, par exemple (?person, foaf:lastName, ?lastName). Cette opération utilise les liaisons pour la variable ?person dans ses flux d'entrée, les substitue dans le modèle de triplet et recherche des triplets à partir de la base de données.

Lorsqu'il est exécuté dans le contexte des liaisons entrantes de la table précédente, l'opérateur PipelineJoin évalue trois recherches, à savoir les éléments suivants :

(ex:JaneDoe, foaf:lastName, ?lastName) (ex:JohnDoe, foaf:lastName, ?lastName) (ex:RichardRoe, foaf:lastName, ?lastName)

Cette approche est appelée évaluation as-bound. Les solutions de ce processus d'évaluation sont jointes à nouveau sur les solutions entrantes, en remplissant le ?lastName détecté dans les solutions entrantes. En supposant que vous trouviez un nom de famille pour les trois personnes, l'opérateur produirait une liste de liaisons sortantes qui ressemblerait à ceci :

?person | ?firstName | ?lastName --------------------------------------- ex:JaneDoe | "Jane" | "Doe" ex:JohnDoe | "John" | "Doe" ex:RichardRoe | "Richard" | "Roe"

Cette liste de liaisons sortantes tient lieu d'entrée pour l'opérateur suivant dans le pipeline. À la fin, la sortie du dernier opérateur du pipeline définit le résultat de la requête.

Les pipelines d'opérateurs sont souvent linéaires, dans la mesure où chaque opérateur émet des solutions pour un seul opérateur connecté. Toutefois, dans certains cas, ils peuvent avoir des structures plus complexes. Par exemple, un opérateur UNION dans une requête SPARQL est mappé à une opération Copy. Cette opération duplique les liaisons et transmet la copie dans deux sous-plans, l'un pour le côté gauche et l'autre pour le côté droit de l'opérateur UNION.

Pour plus d'informations sur les opérateurs, consultez Neptune SPARQLexplainopérateurs.