Création d'un Neptune GraphMappingConfig - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'un Neptune GraphMappingConfig

Dans laGraphMappingConfigque vous créez indique comment les données extraites d'un magasin de données source doivent être chargées dans un cluster de bases de données Neptune. Son format varie selon qu'il est destiné au chargement de données RDF ou au chargement de données de graphes de propriétés.

Pour les données RDF, vous pouvez utiliser le langage W3 R2RML pour mapper des données relationnelles sur RDF.

Si vous chargez des données de graphe de propriétés destinées à être interrogées à l'aide de Gremlin, vous créez un objet JSON pour GraphMappingConfig.

GraphMappingConfig Disposition des données RDF/SPARQL

Si vous chargez des données RDF destinées à être interrogées à l'aide de SPARQL, vous écrivez l'élément GraphMappingConfig en R2RML. R2RML est un langage W3 standard destiné au mappage des données relationnelles sur RDF. Voici un exemple :

@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" ]; ] .

Voici un autre exemple :

@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 recommandation W3 à2 RML : Langage de mappage RDB vers RDFfournit des détails sur la langue.

GraphMappingConfig Mise en page pour le diagramme de propriétés et les données Gremlin

L'élément GraphMappingConfig comparable pour les données de graphe de propriétés est un objet JSON qui fournit une règle de mappage pour chaque entité de graphe à générer à partir des données source. Le modèle suivant montre à quoi ressemble chaque règle de cet objet :

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

Notez que la présence d'une étiquette de sommet implique que le sommet est créé ici, alors que son absence implique que le sommet est créé par une source différente et que cette définition n'ajoute que des propriétés de sommet.

Voici un exemple de règle pour un enregistrement d'employé :

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