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 de OpenSearch
Amazon Neptune utiliza una estructura de documento JSON unificada para almacenar datos de SPARQL y Gremlin en OpenSearch Service. Cada documento de OpenSearch corresponde a una entidad y almacena toda la información relevante de esa entidad. En Gremlin, los vértices y los bordes se consideran entidades, por lo que los documentos correspondientes de OpenSearch tienen información sobre vértices, etiquetas y propiedades. En SPARQL, los sujetos pueden considerarse entidades, por lo que los documentos correspondientes de OpenSearch tienen información sobre todos los pares de predicado-objeto que hay en un documento.
nota
La implementación de la replicación de Neptune a OpenSearch solo almacena datos de cadena. Sin embargo, puede modificarla para almacenar otros tipos de datos.
La estructura de documento JSON unificada 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.Para SPARQL, se trata del URI de asunto.
Para Gremlin, es el
Vertex_IDoEdge_ID.
entity_type: representa una o más etiquetas de un vértice o un borde, o cero o más valores de predicadordf:typepara 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. Para SPARQL, almacena pares de predicado-objeto.El nombre de la propiedad tiene el formato
properties.name.valuede OpenSearch. Para consultarlo, debe nombrarlo de esa forma. value: un valor de propiedad para Gremlin o un valor de objeto para SPARQL.graph: un gráfico con nombre para SPARQL.language: una etiqueta de idioma para un literalrdf:langStringen SPARQL.
Ejemplo de documento de OpenSearch de SPARQL
Datos de
@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 OpenSearch de Gremlin
Datos de
# 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" } ] } }