W3C home > Mailing lists > Public > public-credentials@w3.org > June 2022

Importing Verifiable Data as Labeled Property Graphs

From: Orie Steele <orie@transmute.industries>
Date: Wed, 15 Jun 2022 14:20:09 -0500
Message-ID: <CAN8C-_KO5aq-c4Rz5GmprvBbjBCoSzLai_MdMkVZRtAfkfpuaA@mail.gmail.com>
To: "W3C Credentials CG (Public List)" <public-credentials@w3.org>, W3C VC Working Group <public-vc-wg@w3.org>
I've been using Neo4j <https://neo4j.com/> a lot lately.

One of my favorite features is the ability to preview (framed) JSON-LD.

For example:

```
CALL n10s.rdf.preview.inline(
'
    {
        "@type": "https://schema.org/Organization",
        "https://schema.org/description": "Realigned maximized alliance",
        "https://schema.org/name": "Bartell Inc 🔥"
    }
', 'JSON-LD')
```

For simple cases this works fine... but when I attempt to apply this to
spec compliant verifiable credentials, I get a weird blank node issue with
the proof block.

Here is a picture of what I mean:

[image: Screen Shot 2022-06-15 at 1.40.12 PM.png]

Notice the 2 blank nodes that separate these disjoint subgraphs.

I believe this is caused by the way the `proof` block is defined in the v1
context:

https://github.com/w3c/vc-data-model/blob/v1.1/contexts/credentials/v1#L45

```
"proof": {"@id": "sec:proof", "@type": "@id", "@container": "@graph"},
```

This is a lot of complexity... for one of the most important term
definitions the standard provides.

I believe this is also the cause of the "double blank node" issue, I
observed above.

I think what happens is that a first blank node is created for the proof,
and since that node has `@container` `@graph`, instead of being able to
trace the relationships directly from credential to proof to verification
method...

Each proof is being treated as a disjoint subgraph, and the relationship is
not being preserved during import...

This is really not ideal, since I am interested in querying changes in
these proofs over time for credentials, and that relationship is not being
imported.

I suspect this is solvable with a more complicated graph config:
https://neo4j.com/labs/neosemantics/4.0/config/

But I wonder if we might correct this behavior in VC Data Model 2.0, such
that RDF representations don't have this odd behavior when imported as
labeled property graphs.

Anyone know how to solve this?

If someone has a better list to ask this question, would you mind looping
them in?

If you prefer to answer on the github issue for the standard, I raised it
here: https://github.com/w3c/vc-data-model/issues/881

Regards,

OS


-- 
*ORIE STEELE*
Chief Technical Officer
www.transmute.industries

<https://www.transmute.industries>

Screen_Shot_2022-06-15_at_1.40.12_PM.png
(image/png attachment: Screen_Shot_2022-06-15_at_1.40.12_PM.png)

Received on Wednesday, 15 June 2022 19:20:34 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 15 June 2022 19:20:35 UTC