Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo funciona el motor de SPARQL consultas en Neptune
Para utilizar la información que proporciona la SPARQL explain
función, debe comprender algunos detalles sobre el funcionamiento del motor de SPARQL consultas de Amazon Neptune.
El motor traduce cada SPARQL consulta en una canalización de operadores. Empezando en el primer operador, las soluciones intermedias denominadas listas de enlaces fluyen a través de esta canalización de operadores. Una lista de enlaces se puede considerar una tabla en la que los encabezados son un subconjunto de las variables utilizadas en la consulta. Cada fila de la tabla representa un resultado, hasta el punto de evaluación.
Supongamos que se han definido dos prefijos de espacio de nombres para los datos:
@prefix ex: <http://example.com> . @prefix foaf: <http://xmlns.com/foaf/0.1/> .
El siguiente sería un ejemplo de una lista de enlaces sencilla en este contexto:
?person | ?firstName ------------------------------------------------------ ex:JaneDoe | "Jane" ex:JohnDoe | "John" ex:RichardRoe | "Richard"
Para cada una de las tres personas, la lista vincula la variable ?person
a un identificador de la persona y la variable ?firstName
al nombre de la persona.
En el caso general, las variables pueden permanecer sin vincular si, por ejemplo, hay una selección OPTIONAL
de una variable en una consulta para la que no hay ningún valor presente en los datos.
El operador PipelineJoin
es un ejemplo de un operador de motor de consultas de Neptune presente en la salida de explain
. Toma como entrada un conjunto vinculante entrante del operador anterior y lo une a un patrón triple, por ejemplo (?person, foaf:lastName,
?lastName)
. Esta operación usa los enlaces para la variable ?person
en su secuencia de entrada, los sustituye en el patrón triple y busca los triples en la base de datos.
Cuando se ejecuta en el contexto de los enlaces entrantes de la tabla anterior, PipelineJoin
evaluará tres búsquedas, en concreto las siguientes:
(ex:JaneDoe, foaf:lastName, ?lastName) (ex:JohnDoe, foaf:lastName, ?lastName) (ex:RichardRoe, foaf:lastName, ?lastName)
Este enfoque se denomina evaluación según vinculación. Las soluciones de este proceso de evaluación se unen a las soluciones entrantes, rellenando el ?lastName
detectado en estas. Suponiendo que encuentra un apellido para las tres personas, el operador produciría una lista de enlaces saliente que tendría un aspecto similar al siguiente:
?person | ?firstName | ?lastName --------------------------------------- ex:JaneDoe | "Jane" | "Doe" ex:JohnDoe | "John" | "Doe" ex:RichardRoe | "Richard" | "Roe"
A continuación, esta lista de enlaces saliente sirve como entrada para el siguiente operador de la canalización. Al final, la salida del último operador de la canalización define el resultado de la consulta.
Las canalizaciones de operadores suelen ser lineales, en el sentido de que cada operador emite soluciones para un único operador conectado. Sin embargo, en algunos casos, pueden tener estructuras más complejas. Por ejemplo, un UNION
operador de una SPARQL consulta se asigna a una Copy
operación. Esta operación duplica los enlaces y reenvía las copias en dos subplanes, uno para el lado izquierdo y el otro para el lado derecho de la UNION
.
Para obtener más información sobre los operadores, consulte Operadores de Neptune SPARQL explain.