Model data Neptunus untuk data OpenSearch - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Model data Neptunus untuk data OpenSearch

Amazon Neptunus menggunakan struktur dokumen JSON terpadu untuk menyimpan data Gremlin SPARQL dan Gremlin dalam Layanan. OpenSearch Setiap dokumen OpenSearch sesuai dengan entitas dan menyimpan semua informasi yang relevan untuk entitas tersebut. Untuk Gremlin, simpul dan tepi dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang simpul, label, dan properti. UntukSPARQL, subjek dapat dianggap entitas, sehingga OpenSearch dokumen yang sesuai memiliki informasi tentang semua pasangan objek predikat dalam satu dokumen.

catatan

Neptune-to-OpenSearchImplementasi replikasi hanya menyimpan data string. Namun, Anda dapat mengubahnya untuk menyimpan jenis data lain.

Struktur JSON dokumen terpadu terlihat seperti berikut ini.

{ "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 unik entitas yang mewakili dokumen.

    • SebabSPARQL, inilah subjeknyaURI.

    • Untuk Gremlin, ini adalah Vertex_ID atau Edge_ID.

  • entity_type — Mewakili satu label atau lebih untuk vertex atau edge, atau nilai predikat rdf:type nol atau lebih untuk subjek.

  • document_type — Digunakan untuk menentukan apakah dokumen saat ini merupakan vertex, edge, atau rdf-sumber daya.

  • predicates — Untuk Gremlin, menyimpan properti dan nilai-nilai untuk vertex atau edge. UntukSPARQL, ia menyimpan pasangan objek predikat.

    Nama properti mengambil formulir properties.name.value di OpenSearch. Untuk mengkuerinya, Anda harus memberi namanya dalam bentuk itu.

  • value — Nilai properti untuk Gremlin atau nilai objek untuk. SPARQL

  • graph— Grafik bernama untukSPARQL.

  • language— Tag bahasa untuk rdf:langString literal diSPARQL.

Contoh SPARQL OpenSearch dokumen

Data

@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

Dokumen

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

Contoh dokumen Gremlin OpenSearch

Data

# 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

Dokumen

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