Comportamento di SPARQL DESCRIBE rispetto al grafo predefinito - 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à.

Comportamento di SPARQL DESCRIBE rispetto al grafo predefinito

Il modulo di query SPARQL DESCRIBE consente di recuperare informazioni sulle risorse senza conoscere la struttura dei dati e senza dover comporre una query. Il modo in cui queste informazioni vengono assemblate dipende dall'implementazione SPARQL. Neptune fornisce diversi hint di query che richiamano diverse modalità e algoritmi da utilizzare per DESCRIBE.

Nell'implementazione di Neptune, indipendentemente dalla modalità, DESCRIBE utilizza solo i dati presenti nel grafo SPARQL predefinito. Ciò è coerente con il modo in cui SPARQL tratta i set di dati (vedi Specifying RDF Datasets nella specifica SPARQL).

In Neptune, il grafo predefinito contiene tutte le triple univoche nell'unione di tutti i grafi nominati del database, a meno che non vengano specificati grafi nominati particolari utilizzando le clausole FROM e/o FROM NAMED. Tutti i dati RDF in Neptune sono archiviati in un grafo nominato. Se una tripla viene inserita senza un contesto del grafo nominato, Neptune la archivia in un grafo nominato designato http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph.

Quando uno o più grafi nominati vengono specificati utilizzando la clausola FROM, il grafo predefinito è l'unione di tutte le triple univoche presenti in tali grafi nominati. Se non è presente alcuna clausola FROM e sono presenti una o più clausole FROM NAMED, il grafo predefinito è vuoto.

Esempi di SPARQL DESCRIBE

Considerare i dati seguenti:

PREFIX ex: <https://example.com/> GRAPH ex:g1 { ex:s ex:p1 "a" . ex:s ex:p2 "c" . } GRAPH ex:g2 { ex:s ex:p3 "b" . ex:s ex:p2 "c" . } ex:s ex:p3 "d" .

Per questa query:

PREFIX ex: <https://example.com/> DESCRIBE ?s FROM ex:g1 FROM NAMED ex:g2 WHERE { GRAPH ex:g2 { ?s ?p "b" . } }

Neptune restituirà:

ex:s ex:p1 "a" . ex:s ex:p2 "c" .

In questo caso, il modello di grafo GRAPH ex:g2 { ?s ?p "b" } viene valutato per primo, ottenendo le associazioni per ?s e quindi la parte DESCRIBE viene valutata rispetto al grafo predefinito, che ora è solo ex:g1.

Tuttavia, per questa query:

PREFIX ex: <https://example.com/> DESCRIBE ?s FROM NAMED ex:g1 WHERE { GRAPH ex:g1 { ?s ?p "a" . } }

Neptune non restituirà nulla, perché quando è presente una clausola FROM NAMED senza una clausola FROM, il grafo predefinito è vuoto.

Nella seguente query, DESCRIBE viene utilizzato senza che sia presente una clausola FROM o FROM NAMED:

PREFIX ex: <https://example.com/> DESCRIBE ?s WHERE { GRAPH ex:g1 { ?s ?p "a" . } }

In questa situazione, il grafo predefinito è composto da tutte le triple univoche nell'unione di tutti i grafi nominati nel database (formalmente, l'unione RDF), quindi Neptune restituirà:

ex:s ex:p1 "a" . ex:s ex:p2 "c" . ex:s ex:p3 "b" . ex:s ex:p3 "d" .