Skip to content

Compaction cannot round-trip terms using @container: @list and @type: @vocab #558

Open
@niklasl

Description

@niklasl

The following compact data expands as expected to a @list of vocabulary term IRIs:

{
  "@context": {
    "owl": "http://www.w3.org/2002/07/owl#",
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "owl:unionOf": {"@container": "@list", "@type": "@vocab"},
    "@base": "http://purl.org/ontology/bibo/"
  },
  "@graph": [
    {
      "@id": "authorList",
      "rdfs:range": {
        "owl:unionOf": ["rdf:List", "rdf:Seq"]
      }
    }
  ]
}

However, when compacting the results using the same context, the JSON-LD 1.1 algorithm fails to produce the same compact form.

Here is the above example and the problematic compaction behaviour in the playground.

There are many use cases where a compact form of the combination of @container: @list and @type: @vocab is useful, such as when expressing an owl:unionOf or a owl:propertyChainAxiom, a FRESNEL lens or various expressions in ShEx and SHACL .

I have implemented a fix for this in TRLD. As this implementation strives to follow the specification algortihm, these changes ought to be fairly easy to apply in the specification too (adjusting some prose, and introducing a new section for the new sub-algorithm).

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Discuss-Call

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions