Modèle de données Neptune pourOpenSearchdonnées - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Modèle de données Neptune pourOpenSearchdonnées

Amazon Neptune utilise une structure de document JSON unifiée pour stocker les données SPARQL et Gremlin dansOpenSearchService. Chaque document dansOpenSearchcorrespond à une entité et stocke toutes les informations pertinentes pour cette entité. Pour Gremlin, les sommets et les arcs sont considérés comme des entités.OpenSearchcontiennent des informations sur les sommets, les étiquettes et les propriétés. Pour SPARQL, les sujets peuvent être considérés comme des entités.OpenSearchcontiennent des informations sur toutes les paires prédicat-objet dans un seul document.

Note

Le Neptune à -OpenSearchEnregistre uniquement les données de chaîne. Toutefois, vous pouvez le modifier pour stocker d'autres types de données.

La structure de document JSON unifiée ressemble à ce qui suit.

{ "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 unique d'entité représentant le document.

    • Pour SPARQL, il s'agit de l'URI de sujet.

    • Pour Gremlin, c'est le Vertex_ID ou Edge_ID.

  • entity_typeReprésente une ou plusieurs étiquettes pour un sommet ou une arête, ou zéro ou plusieursrdf:typevaleurs de prédicat pour un sujet.

  • document_typePermet de spécifier si le document actuel représente un sommet, une arête ou une ressource RDF.

  • predicates— Pour Gremlin, stocke les propriétés et les valeurs d'un sommet ou d'une arête. Pour SPARQL, il stocke les paires prédicat-objet.

    Le nom de la propriété prend la forme deproperties.name.valuedansOpenSearch. Pour l'interroger, vous devez le nommer sous cette forme.

  • value — Valeur de propriété pour Gremlin ou valeur d'objet pour SPARQL.

  • graph— Graphe nommé pour SPARQL.

  • language— Nom de langage pour unrdf:langStringlittéral dans SPARQL.

Exemple SPARQLOpenSearchdocument

non structurées

@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

Documents

{ "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" }

Exemple GremlinOpenSearchdocument

non structurées

# 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

Documents

{ "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" } ] } }