Creando un Neptuno GraphMappingConfig - Amazon Neptune

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.

Creando un Neptuno GraphMappingConfig

El GraphMappingConfig que crea especifica cómo se deben cargar los datos extraídos de un almacén de datos de origen en un clúster de base de datos de Neptune. Su formato varía en función de si está destinado a cargar datos RDF o para cargar datos de gráficos de propiedades.

Para los datos de RDF, puede utilizar el lenguaje R2RML de W3 para asignar datos relacionales a RDF.

Si está cargando datos de gráficos de propiedades para consultarlos mediante Gremlin, se crea un objeto JSON para GraphMappingConfig.

GraphMappingConfig Diseño para datos RDF/SPARQL

Si está cargando datos RDF para consultarlos mediante SPARQL, escriba GraphMappingConfig en R2RML. R2RML es un lenguaje W3 estándar para asignación de datos relacionales a RDF. Aquí tiene un ejemplo:

@prefix rr: <http://www.w3.org/ns/r2rml#> . @prefix ex: <http://example.com/ns#> . <#TriplesMap1> rr:logicalTable [ rr:tableName "nodes" ]; rr:subjectMap [ rr:template "http://data.example.com/employee/{id}"; rr:class ex:Employee; ]; rr:predicateObjectMap [ rr:predicate ex:name; rr:objectMap [ rr:column "label" ]; ] .

Este es otro ejemplo:

@prefix rr: <http://www.w3.org/ns/r2rml#> . @prefix ex: <http://example.com/#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <#TriplesMap2> rr:logicalTable [ rr:tableName "Student" ]; rr:subjectMap [ rr:template "http://example.com/{ID}{Name}"; rr:class foaf:Person ]; rr:predicateObjectMap [ rr:predicate ex:id ; rr:objectMap [ rr:column "ID"; rr:datatype xsd:integer ] ]; rr:predicateObjectMap [ rr:predicate foaf:name ; rr:objectMap [ rr:column "Name" ] ] .

La recomendación de W3 en R2RML: RDB to RDF Mapping Language proporciona detalles sobre el lenguaje.

GraphMappingConfig Diseño para datos de Property-Graph/Gremlin

Un GraphMappingConfig comparable para datos de Property-Graph es un objeto JSON que proporciona una regla de asignación para cada entidad de gráfico que se generará a partir de los datos de origen. La siguiente plantilla muestra el aspecto de cada regla en este objeto:

{ "rules": [ { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "vertex_definitions": [ { "vertex_id_template": "{col1}", "vertex_label": "(the vertex to create)", "vertex_definition_id": "(an identifier for this vertex)", "vertex_properties": [ { "property_name": "(name of the property)", "property_value_template": "{col2} or text", "property_value_type": "(data type of the property)" } ] } ] }, { "rule_id": "(an identifier for this rule)", "rule_name": "(a name for this rule)", "table_name": "(the name of the table or view being loaded)", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{col1}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "to_vertex": { "vertex_id_template": "{col3}", "vertex_definition_id": "(an identifier for the vertex referenced above)" }, "edge_id_template": { "label": "(the edge label to add)", "template": "{col1}_{col3}" }, "edge_properties":[ { "property_name": "(the property to add)", "property_value_template": "{col4} or text", "property_value_type": "(data type like String, int, double)" } ] } ] } ] }

Tenga en cuenta que la presencia de una etiqueta de vértice implica que el vértice se está creando aquí, mientras que su ausencia implica que el vértice es creado por un origen distinto y esta definición solo agrega propiedades de vértice.

Aquí hay una regla de ejemplo para un registro de empleado:

{ "rules": [ { "rule_id": "1", "rule_name": "vertex_mapping_rule_from_nodes", "table_name": "nodes", "vertex_definitions": [ { "vertex_id_template": "{emp_id}", "vertex_label": "employee", "vertex_definition_id": "1", "vertex_properties": [ { "property_name": "name", "property_value_template": "{emp_name}", "property_value_type": "String" } ] } ] }, { "rule_id": "2", "rule_name": "edge_mapping_rule_from_emp", "table_name": "nodes", "edge_definitions": [ { "from_vertex": { "vertex_id_template": "{emp_id}", "vertex_definition_id": "1" }, "to_vertex": { "vertex_id_template": "{mgr_id}", "vertex_definition_id": "1" }, "edge_id_template": { "label": "reportsTo", "template": "{emp_id}_{mgr_id}" }, "edge_properties":[ { "property_name": "team", "property_value_template": "{team}", "property_value_type": "String" } ] } ] } ] }