Modelo de dados do Neptune para dados do OpenSearch - Amazon Neptune

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 do Neptune para dados do OpenSearch

O Amazon Neptune usa uma estrutura de documento unificada em JSON para armazenar dados do SPARQL e do Gremlin no OpenSearch Service. Cada documento no OpenSearch corresponde a uma entidade e armazena todas as informações relevantes para essa entidade. Para o Gremlin, os vértices e as bordas são considerados entidades, portanto, os documentos correspondentes do OpenSearch têm informações sobre vértices, rótulos e propriedades. Para o SPARQL, os assuntos podem ser considerados entidades, portanto, os documentos do OpenSearch correspondentes têm informações sobre todos os pares de objeto-predicado em um documento.

nota

A implementação da replicação do Neptune para o OpenSearch armazena somente dados de string. No entanto, você pode modificá-la para armazenar outros tipos de dados.

A estrutura de documento unificada em JSON se parece com o que segue.

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

    • Para o SPARQL, este é o URI do sujeito.

    • Para o Gremlin, este é o Vertex_ID ou Edge_ID.

  • entity_type: representa um ou mais rótulos para um vértice ou uma borda, ou zero ou mais valores de predicado rdf: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. Para o SPARQL, ele armazena pares de predicado-objeto.

    O nome da propriedade assume o formato properties.name.value no OpenSearch. Para consultá-lo, é necessário nomeá-lo dessa forma.

  • value : um valor de propriedade para o Gremlin ou um valor de objeto para o SPARQL.

  • graph: um grafo nomeado para o SPARQL.

  • language: uma tag de linguagem para um literal rdf:langString no SPARQL.

Exemplo de documento OpenSearch em SPARQL

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 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 do OpenSearch em Gremlin

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