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à.
Modello di dati Neptune per i dati di OpenSearch
Amazon Neptune utilizza una struttura di documenti JSON unificata per l'archiviazione dei dati SPARQL e Gremlin nel servizio OpenSearch. Ogni documento in OpenSearch corrisponde a un'entità e archivia tutte le informazioni pertinenti per l'entità stessa. Per Gremlin, i vertici (nodi) e gli archi sono considerati entità, quindi i documenti OpenSearch corrispondenti contengono informazioni su vertici, etichette e proprietà. Per SPARQL, i soggetti possono essere considerati entità, quindi i documenti OpenSearch corrispondenti contengono informazioni su tutte le coppie predicato-oggetto in un unico documento.
Nota
L'implementazione della replica da Neptune a OpenSearch archivia solo i dati stringa. Tuttavia, è possibile modificarlo per memorizzare altri tipi di dati.
La struttura del documento JSON unificata è simile a questa:
{ "entity_id": "
Vertex Id/Edge Id/Subject URI
", "entity_type": [List of Labels/rdf:type object value
], "document_type": "vertex/edge/rdf-resource
" "predicates": { "Property name or predicate URI
": [ { "value": "Property Value or Object Value
", "graph": "(Only for Sparql) Named Graph Quad is present
" "language": "(Only for Sparql) rdf:langString
" }, { "value": "Property Value 2/ Object Value 2
", } ] } }
-
entity_id
: ID univoco dell'entità che rappresenta il documento.Per SPARQL, questo è l'URI del soggetto.
Per Gremlin, questo è
Vertex_ID
oEdge_ID
.
entity_type
: rappresenta una o più etichette per un vertice o un arco o zero o più valori di predicatordf:type
per un soggetto.document_type
: consente di specificare se il documento corrente rappresenta un vertice, un arco o una risorsa RDF.-
predicates
: per Gremlin, archivia proprietà e valori per un vertice o un arco. Per SPARQL, memorizza coppie di oggetti-predicato.Il nome della proprietà assume il formato
properties.name.value
in OpenSearch. Per interrogarlo, devi nominarlo in quel modulo. value
: valore della proprietà per Gremlin o valore di oggetto per SPARQL.graph
: grafo denominato per SPARQL.language
: tag del linguaggio per un valore letteralerdf:langString
in SPARQL.
Documento OpenSearch di esempio per SPARQL
Dati
@prefix dt: <http://example.org/datatype#> . @prefix ex: <http://example.org/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . ex:simone rdf:type ex:Person ex:g1 ex:michael rdf:type ex:Person ex:g1 ex:simone ex:likes "spaghetti" ex:g1 ex:simone ex:knows ex:michael ex:g2 # Not stored in ES ex:simone ex:likes "spaghetti" ex:g2 ex:simone ex:status "La vita è un sogno"@it ex:g2 ex:simone ex:age "40"^^xsd:int DG # Not stored in ES ex:simone ex:dummy "testData"^^dt:newDataType DG ex:simone ex:hates _:bnode # Not stored in ES _:bnode ex:means "coding" DG # Not stored in ES
Documenti
{ "entity_id": "http://example.org/simone", "entity_type": ["http://example.org/Person"], "document_type": "rdf-resource" "predicates": { "http://example.org/likes": [ { "value": "spaghetti", "graph": "http://example.org/g1" }, { "value": "spaghetti", "graph": "http://example.org/g2" } ] "http://example.org/status": [ { "value": "La vita è un sogno", "language": "it" // Only present for rdf:langString } ] } }
{ "entity_id" : "http://example.org/michael", "entity_type" : ["http://example.org/Person"], "document_type": "rdf-resource" }
Documento OpenSearch di esempio per Gremlin
Dati
# Vertex 1 simone label Person <== Label simone likes "spaghetti" <== Property simone likes "rice" <== Property simone age 40 <== Property # Vertex 2 michael label Person <== Label # Edge 1 simone knows michael <== Edge e1 updated "2019-07-03" <== Edge Property e1 through "company" <== Edge Property e1 since 10 <== Edge Property
Documenti
{ "entity_id": "simone", "entity_type": ["Person"], "document_type": "vertex", "predicates": { "likes": [ { "value": "spaghetti" }, { "value": "rice" } ] } }
{ "entity_id" : "michael", "entity_type" : ["Person"], "document_type": "vertex" }
{ "entity_id": "e1", "entity_type": ["knows"], "document_type": "edge" "predicates": { "through": [ { "value": "company" } ] } }