Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

better IO for eye #90

Open
bblfish opened this issue Aug 19, 2023 · 19 comments
Open

better IO for eye #90

bblfish opened this issue Aug 19, 2023 · 19 comments

Comments

@bblfish
Copy link

bblfish commented Aug 19, 2023

One reason I used CWM was just to avoid having to read rdf/xml when it was the fashion. Now it would help me to quickly read JSON-LD which is very helpful to get JSON folk to use rdf data, and to make extensible json schemas, but actually very difficult to read.

Currently, I take some json-ld, go to the json-ld playground, transform the json-ld to Nquads, then by hand I group statements with the same bnode _:bx by enclosing them in a_:bx <https://example.org/ns/semantics#quotedGraph> {... }.

Then it would be lovely if eye could produce some nice readable n3 output (perhaps I could give it some namespaces? But I could not find out how to do that.

So the following would be really nice:

  1. json-ld input
  2. nice n3 output so that one can enter it into code examples in markdown

If anyone else has n3 JavaScript parsers from json-ld to n3 those should be added to the json-ld playground -- please!

I got this working using Jen3, with a bit of pain. For details see Jen3 issue1

@josd
Copy link
Collaborator

josd commented Aug 19, 2023

For the moment you can pipe json-ld translated data into eye as done in https://github.com/eyereasoner/eye/blob/master/reasoning/rdf-star/prepare

@bblfish
Copy link
Author

bblfish commented Aug 19, 2023

Thanks for that tip, but I don't think that works for Verifiable Credentials which contain quoted graphs.

I placed example 6 of the VC data model spec online on my server:

> curl -i  https://bblfish.net/tmp/2023/08/vcdm.ex6.jsonld
HTTP/1.1 200 OK
Date: Sat, 19 Aug 2023 13:32:55 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Sat, 19 Aug 2023 13:23:42 GMT
ETag: "37b-603468dda7e6f"
Accept-Ranges: bytes
Content-Length: 891
Content-Type: application/ld+json

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://www.w3.org/2018/credentials/examples/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1"
  ],
  "id": "http://example.edu/credentials/3732",
  "type": [
    "VerifiableCredential",
    "UniversityDegreeCredential"
  ],
  "issuer": "https://example.edu/issuers/565049",
  "issuanceDate": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "BachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "Ed25519Signature2020",
    "created": "2022-02-25T14:58:43Z",
    "verificationMethod": "https://example.edu/issuers/565049#key-1",
    "proofPurpose": "assertionMethod",
    "proofValue": "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEt
rRvGYppdiK37GU4NBeoPakxpWhAvsVSt"
  }
}

and I received this back

> riot --stream=NQuads  https://bblfish.net/tmp/2023/08/vcdm.ex6.jsonld
15:34:53 ERROR riot            :: [line: 26, col: 76] The document could not be loaded or parsed [code=LOADING_DOCUMENT_FAILED].

even though it gives me correct output for your json-ld urls.
I guess I would need a new riot by @william-vw

@josd
Copy link
Collaborator

josd commented Aug 19, 2023

See the error line: 26, col: 76 and that line is broken up and when you correct it, it works perfectly fine, like

$ riot https://josd.github.io/temp/vcdm.ex6.jsonld
_:B077bf894672f5b3c6f076af001ca877e <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://example.org/examples#BachelorDegree> .
_:B077bf894672f5b3c6f076af001ca877e <http://schema.org/name> "Bachelor of Science and Arts"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML> .
<did:example:ebfeb1f712ebc6f1c276e12ec21> <https://example.org/examples#degree> _:B077bf894672f5b3c6f076af001ca877e .
<http://example.edu/credentials/3732> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/2018/credentials#VerifiableCredential> .
<http://example.edu/credentials/3732> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://example.org/examples#UniversityDegreeCredential> .
<http://example.edu/credentials/3732> <https://w3id.org/security#proof> _:B497431eb2f89a8cd50999093d582c5cf .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#credentialSubject> <did:example:ebfeb1f712ebc6f1c276e12ec21> .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuanceDate> "2010-01-01T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuer> <https://example.edu/issuers/565049> .
_:B6f0d3f77735276663943d536b5ed9c8f <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#Ed25519Signature2020> _:B497431eb2f89a8cd50999093d582c5cf .
_:B6f0d3f77735276663943d536b5ed9c8f <http://purl.org/dc/terms/created> "2022-02-25T14:58:43Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> _:B497431eb2f89a8cd50999093d582c5cf .
_:B6f0d3f77735276663943d536b5ed9c8f <https://w3id.org/security#proofPurpose> <https://w3id.org/security#assertionMethod> _:B497431eb2f89a8cd50999093d582c5cf .
_:B6f0d3f77735276663943d536b5ed9c8f <https://w3id.org/security#proofValue> "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEtrRvGYppdiK37GU4NBeoPakxpWhAvsVSt"^^<https://w3id.org/security#multibase> _:B497431eb2f89a8cd50999093d582c5cf .
_:B6f0d3f77735276663943d536b5ed9c8f <https://w3id.org/security#verificationMethod> <https://example.edu/issuers/565049#key-1> _:B497431eb2f89a8cd50999093d582c5cf .

@bblfish
Copy link
Author

bblfish commented Aug 20, 2023

Ah, thanks. I had fixed that error in the jsonld playground.
Now at least, I have two ways to turn JsonLD into NQuads: the playground and the command line riot from Jena.

Btw, following the example

> riot  https://josd.github.io/temp/vcdm.ex6.jsonld | eye.pvm --quiet --nope -
** ERROR ** - ** invalid_document(after_line(9))

So I guess that is because eye.pvm can't digest the NQuad format yet.

I uploaded your example and did the minimal work to make it look more like n3, added some prefixes, and that then allowed me to run in through eye:

$ eye.pvm --nope https://bblfish.net/tmp/2023/08/vcdm.ex6.ugly.n3 --pass --quiet
@prefix sec: <https://w3id.org/security#>.
@prefix cred: <https://www.w3.org/2018/credentials#>.
@prefix eg: <https://example.org/examples#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix in: <http://n3.w3c.org/builtin/input#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
@prefix list: <http://www.w3.org/2000/10/swap/list#>.
@prefix dc: <http://purl.org/dc/terms/>.

_:e_B077bf894672f5b3c6f076af001ca877e_1 a eg:BachelorDegree.
<http://example.edu/credentials/3732> a cred:VerifiableCredential.
<http://example.edu/credentials/3732> a eg:UniversityDegreeCredential.
_:e_B077bf894672f5b3c6f076af001ca877e_1 <http://schema.org/name> "Bachelor of Science and Arts"^^rdf:HTML.
<did:example:ebfeb1f712ebc6f1c276e12ec21> eg:degree _:e_B077bf894672f5b3c6f076af001ca877e_1.
<http://example.edu/credentials/3732> cred:credentialSubject <did:example:ebfeb1f712ebc6f1c276e12ec21>.
<http://example.edu/credentials/3732> cred:issuanceDate "2010-01-01T00:00:00Z"^^xsd:dateTime.
<http://example.edu/credentials/3732> cred:issuer <https://example.edu/issuers/565049>.
<http://example.edu/credentials/3732> sec:proof {_:e_B6f0d3f77735276663943d536b5ed9c8f_1 a sec:Ed25519Signature2020. _:e_B6f0d3f77735276663943d536b5ed9c8f_1 dc:created "2022-02-25T14:58:43Z"^^xsd:dateTime. _:e_B6f0d3f77735276663943d536b5ed9c8f_1 sec:proofPurpose sec:assertionMethod. _:e_B6f0d3f77735276663943d536b5ed9c8f_1 sec:proofValue "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEtrRvGYppdiK37GU4NBeoPakxpWhAvsVSt"^^sec:multibase. _:e_B6f0d3f77735276663943d536b5ed9c8f_1 sec:verificationMethod <https://example.edu/issuers/565049#key-1>}.

That is a bit better.
I can at least now reason with examples from VC using EYE, so that is good news!

And one of the things that it leads one to is this question I asked on n3 issue 204, namely if the Credentials example shown above is quoting the right triples. It seems that the signature should be on the signed triples that make a statement about did:example:ebfeb1f712ebc6f1c276e12ec21.

@josd
Copy link
Collaborator

josd commented Aug 20, 2023

Btw, following the example

> riot  https://josd.github.io/temp/vcdm.ex6.jsonld | eye.pvm --quiet --nope -
** ERROR ** - ** invalid_document(after_line(9))

So I guess that is because eye.pvm can't digest the NQuad format yet.

I don't understand why you are using eye.pvm as a command?
eye.pvm is a quick load format that is run via swipl -x eye.pvm.
Please follow the installation guide

Then it should all work fine:

riot https://josd.github.io/temp/vcdm.ex6.jsonld | eye --quiet --nope - --pass
_:e_B25b8566811e3bf22ddd8f246ee444ea0_1 a <https://example.org/examples#BachelorDegree>.
<http://example.edu/credentials/3732> a <https://www.w3.org/2018/credentials#VerifiableCredential>.
<http://example.edu/credentials/3732> a <https://example.org/examples#UniversityDegreeCredential>.
_:e_B25b8566811e3bf22ddd8f246ee444ea0_1 <http://schema.org/name> "Bachelor of Science and Arts"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML>.
<did:example:ebfeb1f712ebc6f1c276e12ec21> <https://example.org/examples#degree> _:e_B25b8566811e3bf22ddd8f246ee444ea0_1.
<http://example.edu/credentials/3732> <https://w3id.org/security#proof> _:e_B0671f6832a73a9929693b26bef4630f9_1.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#credentialSubject> <did:example:ebfeb1f712ebc6f1c276e12ec21>.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuanceDate> "2010-01-01T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuer> <https://example.edu/issuers/565049>.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#Ed25519Signature2020> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <http://purl.org/dc/terms/created> "2022-02-25T14:58:43Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#proofPurpose> <https://w3id.org/security#assertionMethod> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#proofValue> "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEtrRvGYppdiK37GU4NBeoPakxpWhAvsVSt"^^<https://w3id.org/security#multibase> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#verificationMethod> <https://example.edu/issuers/565049#key-1> _:e_B0671f6832a73a9929693b26bef4630f9_1.

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

Ah I somehow was on eye version 2.5.0. After updating the repo with your latest changes, and installing, and changing the path from /opt/eye/lib to /opt/eye/bin I now have v4.14.5 installed.
You are right now your above command works. If I add the namespaces

@prefix sec: <https://w3id.org/security#>.
@prefix cred: <https://www.w3.org/2018/credentials#>.
@prefix eg: <https://example.org/examples#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dc: <http://purl.org/dc/terms/>.
@prefix sch: <https://schema.org/>.

to the result and run eye on that enhanced file, I get a bit of an improved output, but it still looks very nquadish. I guess at that point I could run it through jen3.

But now I have the latest version installed.

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

@bblfish wrote:

but it still looks very nquadish.

Ah but that is because it is. Your output is an intermediate format between NQuads and n3. That makes sense if we follow the idea that N3 should be to NQuads what turtle is to NTriples -- but that is why I was thinking N3 should then be called N4! :-)

I don't think that has made it into the n3 spec, but I'd be ok to support that, as it would make conversion between NQuads and N4 easier to follow.

Is there not a way with eye to clean up the quads and place them automatically into a { } ? That would be helpful.

@josd
Copy link
Collaborator

josd commented Aug 21, 2023

The native eye reasoner does not have any notion of NQuads, only NTriples, Turtle, N3 and N3S (the latter being N3 for RDF Surfaces). There is also no plan to extend that in the native eye but as you can see in eye-js

The n3reasoner accepts both strings (formatted in Notation3 syntax) and quads as input. The output will be of the same type as the input data. This means that we can use n3reasoner with RDF/JS quads as follows:

import { Parser } from 'n3';

const parser = new Parser({ format: 'text/n3' });
export const queryQuads = parser.parse(queryString);
export const dataQuads = parser.parse(dataString);

// The result of the query (as an array of quads)
const resultQuads = await n3reasoner(dataQuads, queryQuads);

All this work is done by @jeswr and I am very happy for that!

@jeswr
Copy link
Member

jeswr commented Aug 21, 2023

In addition to eye-js another couple of pointers for JS land are:

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

What format is the output of the command @josd ran in the comment above? It contains triples, quads, but also shortcuts that are not part of the NQuads standard such as a.

_:e_B25b8566811e3bf22ddd8f246ee444ea0_1 a <https://example.org/examples#BachelorDegree>.
<http://example.edu/credentials/3732> a <https://www.w3.org/2018/credentials#VerifiableCredential>.
<http://example.edu/credentials/3732> a <https://example.org/examples#UniversityDegreeCredential>.
_:e_B25b8566811e3bf22ddd8f246ee444ea0_1 <http://schema.org/name> "Bachelor of Science and Arts"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML>.
<did:example:ebfeb1f712ebc6f1c276e12ec21> <https://example.org/examples#degree> _:e_B25b8566811e3bf22ddd8f246ee444ea0_1.
<http://example.edu/credentials/3732> <https://w3id.org/security#proof> _:e_B0671f6832a73a9929693b26bef4630f9_1.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#credentialSubject> <did:example:ebfeb1f712ebc6f1c276e12ec21>.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuanceDate> "2010-01-01T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>.
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuer> <https://example.edu/issuers/565049>.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#Ed25519Signature2020> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <http://purl.org/dc/terms/created> "2022-02-25T14:58:43Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#proofPurpose> <https://w3id.org/security#assertionMethod> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#proofValue> "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEtrRvGYppdiK37GU4NBeoPakxpWhAvsVSt"^^<https://w3id.org/security#multibase> _:e_B0671f6832a73a9929693b26bef4630f9_1.
_:e_B9e3bfecb2a361ee1e6d6889af3180e07_1 <https://w3id.org/security#verificationMethod> <https://example.edu/issuers/565049#key-1> _:e_B0671f6832a73a9929693b26bef4630f9_1.

@josd
Copy link
Collaborator

josd commented Aug 21, 2023

It is an experimental thing to see if we could deal with n-quads

v4.10.13 (2023-08-02) initial support for n-quads

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

It is an experimental thing to see if we could deal with n-quads

v4.10.13 (2023-08-02) initial support for n-quads

That's what I thought and why I suggested it could be called N4 above.
It makes sense to have that because it allows one to progress from NQuads to N4 the way. one progresses from NTriples to Turtle

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

For the moment, it is a lot of work to get via the Jena and eye from JSON-LD to nice looking n3.
Here I wrote up the detailed stages of the process
w3c/vc-data-model#1248 (comment)

Perhaps with the help of the JS N3 tools mentioned above the JsonLD playground could just get us there in one step! I guess @msporny would know who would be interested in that...

@msporny
Copy link

msporny commented Aug 21, 2023

See the error line: 26, col: 76 and that line is broken up and when you correct it, it works perfectly fine, like

Yes, we have tried to fix this in the specification by inserting a non-whitespace-break in the examples. Let us know if you find any other examples that are malformed when copied out of the spec.

Perhaps with the help of the JS N3 tools #90 the JsonLD playground could just get us there in one step! I guess @msporny would know who would be interested in that...

The JSON-LD Playground is open source, so anyone can add features to it:

https://github.com/json-ld/json-ld.org/tree/main/playground

... though, I'm confused about what the ask is here. /cc @davidlehn

@bblfish
Copy link
Author

bblfish commented Aug 21, 2023

@msporny wrote:

. though, I'm confused about what the ask is here.

I think it would be nice if one could put JsonLD into the playground and get beautiful N3 out as specified by the N3 CG Notation3 spec.

The reason is that the N3 output can be very readable. Currently, the playground only has an NQuads output which is good for machine readability but not for human consumption.
Perhaps Eye JS N3 libs mentioned a few comments up is good enough to produce nice n3 output @jeswr ?

@msporny
Copy link

msporny commented Aug 21, 2023

I think it would be nice if one could put JsonLD into the playground and get N3 out as specified by the N3 CG Notation3 spec.

Ah, yes, that would be fairly easy to do if there was a JS library that can convert NQuads to N3 (or similar).

We don't have the bandwidth right now to add that feature, but as I said, the playground is open source so just about anyone can raise a PR to add the functionality.

@jeswr
Copy link
Member

jeswr commented Aug 21, 2023

Perhaps #90 (comment) is good enough to produce nice n3 output @jeswr ?

Yup - the pretty-turtle library does pretty n3 as well so it should be good for your purposes :)

@josd
Copy link
Collaborator

josd commented Aug 21, 2023

It is an experimental thing to see if we could deal with n-quads

v4.10.13 (2023-08-02) initial support for n-quads

That's what I thought and why I suggested it could be called N4 above. It makes sense to have that because it allows one to progress from NQuads to N4 the way. one progresses from NTriples to Turtle

Right and it is straightforward to have an N3 rule to collect the quads in graph terms e.g.

@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix graph: <http://www.w3.org/2000/10/swap/graph#>.
@prefix : <urn:example:>.

:a :b :c :x.
:d :e :f :x.
:g :h :i :x.

:j :k :l :y.

{
    ?S ?P ?O ?G.
    ({?A ?B ?C} {?A ?B ?C ?G} ?L) log:collectAllIn ?SCOPE.
    ?GT graph:list ?L.
} => {
    ?G :graphTerm ?GT.
}.

will give you

$ eye --quiet --nope /tmp/quad.n3 --pass-only-new
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix graph: <http://www.w3.org/2000/10/swap/graph#>.
@prefix : <urn:example:>.

<urn:example:x> <urn:example:graphTerm> {
    <urn:example:a> <urn:example:b> <urn:example:c>.
    <urn:example:d> <urn:example:e> <urn:example:f>.
    <urn:example:g> <urn:example:h> <urn:example:i>.
}.
<urn:example:y> <urn:example:graphTerm> {
    <urn:example:j> <urn:example:k> <urn:example:l>.
}.

@josd
Copy link
Collaborator

josd commented Aug 21, 2023

What format is the output of the command @josd ran in the comment above? It contains triples, quads, but also shortcuts that are not part of the NQuads standard such as a.

If you want to avoid that a use eye --no-qnames for the moment and it round-trips :-)

$ riot https://josd.github.io/temp/vcdm.ex6.jsonld | eye --quiet --nope - --pass --no-qnames | riot
_:B166425f92d5a8901d6b3c90838171611 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://example.org/examples#BachelorDegree> .
<http://example.edu/credentials/3732> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://www.w3.org/2018/credentials#VerifiableCredential> .
<http://example.edu/credentials/3732> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://example.org/examples#UniversityDegreeCredential> .
_:B166425f92d5a8901d6b3c90838171611 <http://schema.org/name> "Bachelor of Science and Arts"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML> .
<did:example:ebfeb1f712ebc6f1c276e12ec21> <https://example.org/examples#degree> _:B166425f92d5a8901d6b3c90838171611 .
<http://example.edu/credentials/3732> <https://w3id.org/security#proof> _:B663742afd5b416a4f6df7d9a6808896e .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#credentialSubject> <did:example:ebfeb1f712ebc6f1c276e12ec21> .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuanceDate> "2010-01-01T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://example.edu/credentials/3732> <https://www.w3.org/2018/credentials#issuer> <https://example.edu/issuers/565049> .
_:B513d54f573f533744e47c5a4f4e18d7b <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#Ed25519Signature2020> _:B663742afd5b416a4f6df7d9a6808896e .
_:B513d54f573f533744e47c5a4f4e18d7b <http://purl.org/dc/terms/created> "2022-02-25T14:58:43Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> _:B663742afd5b416a4f6df7d9a6808896e .
_:B513d54f573f533744e47c5a4f4e18d7b <https://w3id.org/security#proofPurpose> <https://w3id.org/security#assertionMethod> _:B663742afd5b416a4f6df7d9a6808896e .
_:B513d54f573f533744e47c5a4f4e18d7b <https://w3id.org/security#proofValue> "zeEdUoM7m9cY8ZyTpey83yBKeBcmcvbyrEQzJ19rD2UXArU2U1jPGoEtrRvGYppdiK37GU4NBeoPakxpWhAvsVSt"^^<https://w3id.org/security#multibase> _:B663742afd5b416a4f6df7d9a6808896e .
_:B513d54f573f533744e47c5a4f4e18d7b <https://w3id.org/security#verificationMethod> <https://example.edu/issuers/565049#key-1> _:B663742afd5b416a4f6df7d9a6808896e .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants