As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Modelo de dados Neptune para dados OpenSearch
O Amazon Neptune usa uma estrutura JSON unificada de documentos para armazenar SPARQL tanto os dados quanto os do Gremlin no Service. OpenSearch Cada documento OpenSearch corresponde a uma entidade e armazena todas as informações relevantes dessa entidade. Para Gremlin, vértices e arestas são considerados entidades, então os OpenSearch documentos correspondentes têm informações sobre vértices, rótulos e propriedades. PoisSPARQL, os sujeitos podem ser considerados entidades, de modo que OpenSearch os documentos correspondentes tenham informações sobre todos os pares predicado-objeto em um documento.
nota
A implementação da Neptune-to-OpenSearch replicação armazena somente dados de string. No entanto, você pode modificá-la para armazenar outros tipos de dados.
A estrutura unificada do JSON documento tem a seguinte aparência.
{ "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 de entidade exclusivo que representa o documento.PoisSPARQL, esse é o assuntoURI.
Para o Gremlin, este é o
Vertex_ID
ouEdge_ID
.
entity_type
: representa um ou mais rótulos para um vértice ou uma borda, ou zero ou mais valores de predicadordf:type
para um assunto.document_type
: usado para especificar se o documento atual representa um vértice, uma borda ou um recurso RDF.-
predicates
: para o Gremlin, armazena propriedades e valores para um vértice ou uma borda. PoisSPARQL, ele armazena pares predicados-objetos.O nome da propriedade assume o formato
properties.name.value
em OpenSearch. Para consultá-lo, é necessário nomeá-lo dessa forma. value
— Um valor de propriedade para Gremlin ou um valor de objeto para. SPARQLgraph
— Um gráfico nomeado paraSPARQL.language
— Uma tag de idioma para umardf:langString
entrada literal. SPARQL
SPARQL OpenSearch Documento de amostra
Dados
@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
Documentos
{ "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" }
Exemplo de documento Gremlin OpenSearch
Dados
# 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
Documentos
{ "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" } ] } }