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á diseñado para cargar RDF datos o para cargar datos de gráficos de propiedades.

En el RDF caso de los datos, puede utilizar el RML lenguaje W3 R2 para mapear datos relacionales. RDF

Si va a cargar datos de gráficos de propiedades para consultarlos con Gremlin, debe crear un objeto para. JSON GraphMappingConfig

GraphMappingConfig SPARQLDiseño para//Data RDF

Si está cargando RDF datos para consultarlosSPARQL, escriba los GraphMappingConfig en R2 RML. R2RMLes un lenguaje W3 estándar para mapear datos relacionales. 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 del W3 publicada en R2RML: RDB to RDF Mapping Language proporciona detalles del lenguaje.

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

Un objeto comparable GraphMappingConfig para los datos de un gráfico de propiedades es un JSON objeto que proporciona una regla de mapeo para cada entidad gráfica que se va a 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" } ] } ] } ] }