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 SPARQL requêtes dans Neptune
Pour utiliser les informations fournies par cette SPARQL explain
fonctionnalité, vous devez comprendre certains détails sur le fonctionnement du moteur de SPARQL requêtes Amazon Neptune.
Le moteur traduit chaque SPARQL requête 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.
L'opérateur PipelineJoin
est un exemple d'opérateur de moteur de requête Neptune présent dans la sortie de la fonctionnalité explain
. 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 UNION
opérateur d'une SPARQL requête est mappé à une Copy
opération. 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 Opérateurs Neptune SPARQL explain.