Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Modelo de datos de Neptune para datos OpenSearch
Amazon Neptune utiliza una estructura de JSON documentos unificada para almacenar tanto SPARQL los datos como los de Gremlin en Service. OpenSearch Cada documento OpenSearch corresponde a una entidad y almacena toda la información relevante de esa entidad. Para Gremlin, los vértices y las aristas se consideran entidades, por lo que los OpenSearch documentos correspondientes contienen información sobre los vértices, las etiquetas y las propiedades. Como los sujetos pueden considerarse entidadesSPARQL, los OpenSearch documentos correspondientes contienen información sobre todos los pares de predicado y objeto en un documento.
nota
La implementación de Neptune-to-OpenSearch replicación solo almacena datos de cadenas. Sin embargo, puede modificarla para almacenar otros tipos de datos.
La estructura unificada JSON del documento tiene el siguiente aspecto.
{ "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
: identificador único de la entidad que representa el documento.SPARQLPues este es el temaURI.
Para Gremlin, es el
Vertex_ID
oEdge_ID
.
entity_type
: representa una o más etiquetas de un vértice o un borde, o cero o más valores de predicadordf:type
para un sujeto.document_type
: se utiliza para especificar si el documento actual representa un vértice, un borde o un recurso RDF.-
predicates
: en el caso de Gremlin, almacena las propiedades y los valores de un vértice o un borde. PuesSPARQL, almacena pares de predicado-objeto.El nombre de la propiedad toma el formulario.
properties.name.value
OpenSearch Para consultarlo, debe nombrarlo de esa forma. value
— Un valor de propiedad para Gremlin o un valor de objeto para. SPARQLgraph
— Un gráfico con nombre para. SPARQLlanguage
— Una etiqueta de idioma para unardf:langString
entrada literalSPARQL.
SPARQL OpenSearch Documento de muestra
Datos
@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" }
Ejemplo de documento de Gremlin OpenSearch
Datos
# 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" } ] } }