Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Neptun-Datenmodell für Daten OpenSearch
Amazon Neptune verwendet eine einheitliche JSON-Dokumentstruktur zum Speichern von SPARQL- und Gremlin-Daten im Service. OpenSearch Jedes Dokument in OpenSearch entspricht einer Entität und speichert alle relevanten Informationen für diese Entität. Bei Gremlin werden Scheitelpunkte und Kanten als Entitäten betrachtet, sodass die entsprechenden OpenSearch Dokumente Informationen über Scheitelpunkte, Beschriftungen und Eigenschaften enthalten. Bei SPARQL können Subjekte als Entitäten betrachtet werden, sodass entsprechende OpenSearch Dokumente Informationen über alle Prädikat-Objekt-Paare in einem Dokument enthalten.
Anmerkung
Die Neptune-to-OpenSearch Replikationsimplementierung speichert nur Zeichenkettendaten. Sie können sie jedoch so ändern, dass andere Datentypen gespeichert werden.
Die einheitliche JSON-Dokumentstruktur sieht folgendermaßen aus:
{ "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
– Eindeutige Entitäts-ID, die das Dokument repräsentiert.Bei SPARQL ist dies der Subjekt-URI.
Für Gremlin ist dies die
Vertex_ID
oderEdge_ID
.
entity_type
– Stellt eine oder mehrere Bezeichnungen für einen Vertex oder einen Edge bzw. keine oder mehrererdf:type
-Prädikatwerte für ein Subjekt dar.document_type
– Gibt an, ob das aktuelle Dokument einen Vertex, einen Edge oder eine RDF-Ressource darstellt.-
predicates
– Bei Gremlin werden Eigenschaften und Werte für einen Vertex oder einen Edge gespeichert. Bei SPARQL werden Prädikatobjektpaare gespeichert.Der Eigenschaftsname hat die Form
properties.name.value
in OpenSearch. Um ihn abfragen zu können, müssen Sie ihn in dieser Form benennen. value
– Ein Eigenschaftswert für Gremlin oder ein Objektwert für SPARQL.graph
– Ein benannter Graph für SPARQL.language
– Ein Sprach-Tag für einrdf:langString
-Literal in SPARQL.
Beispiel für ein SPARQL-Dokument OpenSearch
Daten
@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 # Not stored in ES ex:simone ex:hates _:bnode # Not stored in ES _:bnode ex:means "coding" DG # Not stored in ES
Dokumente
{ "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" }
Beispiel für ein Gremlin-Dokument OpenSearch
Daten
# 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
Dokumente
{ "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" } ] } }