- From: Roman Evstifeev <someuniquename@gmail.com>
- Date: Mon, 9 Jul 2018 21:43:16 +0300
- To: public-linked-json@w3.org
---------- Forwarded message ----------
From: Roman Evstifeev <someuniquename@gmail.com>
Date: 9 July 2018 at 21:38
Subject: @list of @lists usecase: SHACL
To: public-linked-json-request@w3.org
Hello list,
I have recently bumped into an issue with support of nested lists in json-ld.
In short, lists of lists are common in SHACL[1] property paths, one
example already included in the spec appendix shacl-shacl [2], which
is self-recursive SHACL rules to validate other SHACL graphs. When I
tried to convert its ttl to json-ld with Rdflib-jsonld [3], i got an
invalid JSON-LD document:
### shsh.ttl snippet ###
_:PathPath
sh:alternativePath (
( [ sh:zeroOrMorePath rdf:rest ] rdf:first )
...
) .
###
### produced shsh.jsonld snippet ###
{
"@id": "_:b1",
"sh:alternativePath": {
"@list": [
{
"@list": [
{
"@id": "_:b2"
},
{
"@id": "rdf:first"
}
]
}
]
}
},
###
JSON-LD above is invalid because of nested @list declaration,
processors pyld and playground choke at this input, complaining that
it is not supported.
Nested lists are easily crafted in SHACL, as sh:alternativePath (
path1 path2 ) where path1 or path2 is also a list. I think such
constucts would be quite common in the wild, and quite disappointing
that JSON-LD has issues with it.
So is there any way to properly support SHACL spec using JSON-LD? My
goal is to be able to serialize my webserver shapes as JSON-LD and
serve to clients via http.
[1] Shapes and constraint language spec https://www.w3.org/TR/shacl/
[2] SHACL Shapes to Validate Shapes Graphs
https://www.w3.org/TR/shacl/#shacl-shacl
[3] Rdflib-jsonld https://github.com/RDFLib/rdflib-jsonld
Received on Monday, 9 July 2018 18:43:39 UTC