Nicolas Delaforge
Nicolas Delaforge

Reputation: 1664

DSE Graph Loader mapping edges

I have to map data from JSON files to DSE. Everything is working just fine, but I didn't find any documentation about the way to map edges connected to different nodes but sharing a same label.

Example :

[A:Car] -- [OWNER] --> [B:Person]
[C:Car] -- [OWNER] --> [D:Company]

I've tried different approaches, finally I've added a custom field that explicitly describes the class of the nodes :

Data sample

// Nodes
{"id":"A","label":"Car"}
{"id":"B","label":"Person"}
{"id":"C","label":"Car"}
{"id":"D","label":"Company"}

// Edges
{"out":"A","label":"OWNER","in":"B", "outLabel":"Car","inLabel":"Person"}
{"out":"C","label":"OWNER","in":"D", "outLabel":"Car","inLabel":"Company"}

Here is the mapping script

load(nodesInput).asVertices {
     labelField "label"
     key "id"
}

load(edgesInput).asEdges {
    label "OWNER"
    outV "out", {
        key "id"
        label "Car"
    }
    inV "in", {
        key "id"
        labelField "inLabel"  <-- this declaration seems to fail
    }
}

Any idea ?

Upvotes: 1

Views: 176

Answers (1)

peytoncas
peytoncas

Reputation: 953

I believe you could accomplish the above with something like the following.

load(edgesInput).asEdges {
    label "OWNER"
    outV "out", {
        key "id"
        label "Car"
    }
    inV "in", {
        key "id"
        label it["inLabel"]
    }
}

https://docs.datastax.com/en/latest-dse/datastax_enterprise/graph/dgl/dglMapScript.html

Upvotes: 2

Related Questions