[
https://issues.apache.org/jira/browse/JENA-2069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17303369#comment-17303369
]
Andy Seaborne edited comment on JENA-2069 at 3/17/21, 12:47 PM:
----------------------------------------------------------------
jena uses the [jsonld-java|https://github.com/jsonld-java/jsonld-java]
processor for JSON-LD.
You also have a prefix ":" for the same URL so the processor has a choice.
FWIW: I'm not sure that a relative URI is what is best in the example. A prefix
name defines neatly a absolute and stable URI.
{noformat}
BASE <http://base/>
<x> <p> <o> .
{noformat}
produces
{noformat}
{
"@id" : "x",
"p" : "o",
"@context" : {
"p" : {
"@id" : "http://base/p",
"@type" : "@id"
}
}
}
{noformat}
so the base has been used. It is just that the {{@base}} is not explicitly
included in the context.
For Turtle does the same , except the default is to include {{BASE}}. User
feedback was to at least provide the option of not outputting it to the true
URI will be dependent of what the file is located. i.e. the other way round to
your request: JENA-1968.
This is a feature of the jsonld-java processor. I haven't found a way to ask it
to include the "@base". if you find one, could you let us know? If there is a
way to get jsonld-java to optionally include {{@base}}, then this can be
controlled in the same way from Jena.
The Jena writer is {{org.apache.jena.riot.writer.JsonLDWriter}}. It passes base
to the JSON-LD options.
was (Author: andy.seaborne):
jena uses the [jsonld-java|https://github.com/jsonld-java/jsonld-java]
processor for JSON-LD.
You also have a prefix ":" for the same URL so the processor has a choice.
FWIW: I'm not sure that a relative URI is what is best in the example. A prefix
name defines neatly a absolute and stable URI.
{noformat}
BASE <http://base/>
<x> <p> <o> .
{noformat}
produces
{noformat}
{
"@id" : "x",
"p" : "o",
"@context" : {
"p" : {
"@id" : "http://base/p",
"@type" : "@id"
}
}
}
{noformat}
so the base has been used. It is just that the {{@base}} is not explicitly
included in the context.
For Turtle does the same , except the default is to include {{BASE}}. User
feedback was to at least provide the option of not outputting it to the true
URI will be dependent of what the file is located.
This is a feature of the jsonld-java processor. I haven't found a way to ask it
to include the "@base". if you find one, could you let us know? If there is a
way to get jsonld-java to optionally include {{@base}}, then this can be
controlled in the same way from Jena.
The Jena writer is {{org.apache.jena.riot.writer.JsonLDWriter}}. It passes base
to the JSON-LD options.
> JSON-LD serialisation and the base URI
> --------------------------------------
>
> Key: JENA-2069
> URL: https://issues.apache.org/jira/browse/JENA-2069
> Project: Apache Jena
> Issue Type: Bug
> Components: Jena
> Affects Versions: Jena 3.17.0
> Reporter: Goksel Misirli
> Priority: Major
>
> The Jena JSON-LD serialiser uses the @vocab keyword to represent the default
> namespace when a Jena Model object has the default namespace URI defined.
> However, explicitly setting a base URI does not seem to work and only the
> default namespace is serialised.
> RDFWriterBuilder writerBuilder =
> RDFWriter.create().source(model).format(format);
> writerBuilder.base(baseUri.toString());
> I believe the @base keyword should be used to represent the base URIs. For
> example, in the Turtle representation, the base property can be used to infer
> that the URI for the CodonOptimisationProtocol resource in the example below
> is "https://sbolstandard.org/examples/CodonOptimisationProtocol". As far as I
> understand, in JSON-LD representation, the @vocab term would not be used to
> infer the URIs for individual resources but for type definitions.
> My temporary solution is to remove the default namespace before serialising
> the model to avoid the use of the @vocab keyword for now. The use of the
> @vocab keyword would be ok, if the @base is also saved.
> model.removeNsPrefix("");
> Please let me know if more information is needed.
> Please see below.
> Looking forward to hearing from you.
> Thanks
> -----------------------
> [https://www.w3.org/TR/json-ld11/#default-vocabulary]
> [https://www.w3.org/TR/json-ld11/#base-iri]
> TURTLE - Both the default namespace and the base URI can be defined using
> Jena.
> {noformat}
> @base <https://sbolstandard.org/examples/> .
> @prefix : <https://sbolstandard.org/examples/> .
> @prefix sbol: <http://sbols.org/v3#> .
> @prefix prov: <http://www.w3.org/ns/prov#> .
> :CodonOptimisationProtocol
> a prov:Plan ;
> sbol:description "Optimisation protocol to improve the translation of
> mRNAs." ;
> sbol:displayId "CodonOptimisationProtocol" ;
> sbol:name "Codon Optimisation Protocol" .
> {noformat}
> JSON-LD - Can't define the base URI using Jena.
> {noformat}
> {
> "@id" : "CodonOptimisationProtocol",
> "@type" : "prov:Plan",
> "description" : "Optimisation protocol to improve the translation of mRNAs.",
> "displayId" : "CodonOptimisationProtocol",
> "name" : "Codon Optimisation Protocol",
> "@context" : {
> "description" : { "@id" : "http://sbols.org/v3#description" } ,
> "name" : { "@id" : "http://sbols.org/v3#name" } ,
> "displayId" : { "@id" : "http://sbols.org/v3#displayId" },
> "@vocab" : "https://sbolstandard.org/examples/",
> "sbol" : "http://sbols.org/v3#",
> "prov" : "http://www.w3.org/ns/prov#"
> }
> }
> {noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)