Funzionamento del motore di query SPARQL in Neptune - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzionamento del motore di query SPARQL in Neptune

Per usare le informazioni fornite dalla funzionalità SPARQL explain, è necessario conoscere alcuni dettagli su come funziona il motore di query SPARQL di Amazon Neptune.

Il motore traduce ogni query SPARQL in una pipeline di operatori. A partire dal primo operatore, le soluzioni intermedie note come elenchi vincolanti passano attraverso questa pipeline di operatori. Si può considerare un elenco vincolante come una tabella in cui le intestazioni di tabella sono un sottoinsieme delle variabili utilizzate nella query. Ogni riga della tabella rappresenta un risultato, fino al punto di valutazione.

Supponiamo che siano stati definiti due prefissi di spazio dei nomi per i dati:

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

Il seguente è un esempio di un elenco vincolante semplice in questo contesto:

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

Per ognuna delle tre persone, l'elenco associa la variabile ?person a un identificatore della persona e la variabile ?firstName al nome della persona.

In generale, le variabili possono rimanere non vincolate se, per esempio, c'è una selezione OPTIONAL di una variabile in una query per la quale non è presente nessun valore nei dati.

L'operatore PipelineJoin è un esempio di un operatore del motore di query Neptune presente nell'output di explain. Prende come input un set vincolante in entrata dall'operatore precedente ed esegue il join in base a un modello triplice, tipo (?person, foaf:lastName, ?lastName). Questa operazione utilizza le associazioni per la variabile ?person nel flusso di input, le sostituisce nel modello triplice e cerca le triple dal database.

Quando viene eseguito nel contesto delle associazioni in entrata dalla tabella precedente, PipelineJoin valuta tre ricerche, ovvero le seguenti:

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

Questo approccio è definito valutazione as-bound. Le soluzioni di questo processo di valutazione verranno unite alle soluzioni in entrata, inserendo il ?lastName rilevato nelle soluzioni in entrata. Supponendo che si trovi un cognome per tutte e tre le persone, l'operatore produrrebbe un elenco vincolante in uscita simile a questo:

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

Questo elenco vincolante in uscita quindi serve come input per l'operatore successivo nella pipeline. Al termine, l'output dell'ultimo operatore nella pipeline definisce il risultato della query.

Le pipeline di operatori sono spesso lineari, nel senso che ogni operatore genera soluzioni per un unico operatore collegato. Tuttavia, in alcuni casi, possono avere più strutture complesse. Ad esempio, un operatore UNION in una query SPARQL viene mappato a un'operazione Copy. Questa operazione duplica le associazioni e inoltra le copie in due piani secondari, uno per il lato sinistro e l'altro per il lato destro di UNION.

Per ulteriori informazioni sugli operatori, vedi Operatori di SPARQL explain in Neptune.