filip26 / titanium-json-ld

A JSON-LD 1.1 Processor & API
https://apicatalog.com
Apache License 2.0
134 stars 33 forks source link

Error parsing linkedart context definition #348

Closed michielhildebrand closed 4 months ago

michielhildebrand commented 4 months ago

Describe the bug We use Jena to parse RDF files, including jsonld. When loading the latest version of the linked art context definition in jsonld (https://linked.art/ns/v1/linked-art.json) Jena reports an error. According to the maintainers of the linked art context definition the jsonld is correct and is parsed by pyld, see https://github.com/linked-art/linked.art/issues/235#issuecomment-2184074817. The specific section of the jsonld document that triggers the error is.

"@context": {
   "@id": "crm:P177_assigned_property_of_type",
   "@type": "@vocab",
   "@context": {
       "part_of": {
           "@id": "crm:P46i_forms_part_of"
       }
   }
}

To Reproduce

curl -o linkart.json 'https://linked.art/ns/v1/linked-art.json'
cat linkart.json | ./ld-cli expand --ordered --pretty
JsonLdError[code=The local context defined within a term definition is invalid [code=INVALID_SCOPED_CONTEXT]., message=The local context defined within a term definition is invalid [code=INVALID_SCOPED_CONTEXT].]
    at com.apicatalog.jsonld.context.TermDefinitionBuilder.create(TermDefinitionBuilder.java:540)
    at com.apicatalog.jsonld.context.ActiveContextBuilder.create(ActiveContextBuilder.java:457)
    at com.apicatalog.jsonld.expansion.ObjectExpansion.initLocalContext(ObjectExpansion.java:200)
    at com.apicatalog.jsonld.expansion.ObjectExpansion.expand(ObjectExpansion.java:102)
    at com.apicatalog.jsonld.expansion.Expansion.compute(Expansion.java:119)
    at com.apicatalog.jsonld.processor.ExpansionProcessor.expand(ExpansionProcessor.java:124)
    at com.apicatalog.jsonld.api.ExpansionApi.get(ExpansionApi.java:131)
    at com.apicatalog.cli.command.ExpandCmd.call(ExpandCmd.java:76)
    at com.apicatalog.cli.command.ExpandCmd.call(ExpandCmd.java:18)
    at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
    at picocli.CommandLine.access$1300(CommandLine.java:145)
    at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
    at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
    at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
    at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
    at picocli.CommandLine.execute(CommandLine.java:2078)
    at com.apicatalog.cli.App.main(App.java:82)
Caused by: JsonLdError[code=The local context defined within a term definition is invalid [code=INVALID_SCOPED_CONTEXT]., message=The local context defined within a term definition is invalid [code=INVALID_SCOPED_CONTEXT].]
    at com.apicatalog.jsonld.context.TermDefinitionBuilder.create(TermDefinitionBuilder.java:540)
    at com.apicatalog.jsonld.context.ActiveContextBuilder.create(ActiveContextBuilder.java:457)
    at com.apicatalog.jsonld.context.TermDefinitionBuilder.create(TermDefinitionBuilder.java:537)
    ... 17 more
Caused by: JsonLdError[code=A keyword redefinition has been detected [code=KEYWORD_REDEFINITION]., message=A keyword [@id] redefinition has been detected.]
    at com.apicatalog.jsonld.context.TermDefinitionBuilder.create(TermDefinitionBuilder.java:165)
    at com.apicatalog.jsonld.context.ActiveContextBuilder.create(ActiveContextBuilder.java:457)
    at com.apicatalog.jsonld.context.TermDefinitionBuilder.create(TermDefinitionBuilder.java:537)
    ... 19 more

Expected behavior JSONLD document should be parsed.

michielhildebrand commented 4 months ago

The problem was in the linked art context https://github.com/linked-art/linked.art/issues/235. The error message this library provided was correct. It appears to me that pyld is actually the one missing the error of KEYWORD_REDEFINITION within nested contexts.

filip26 commented 4 months ago

@michielhildebrand great, thank you for sharing that.