[ 
https://issues.apache.org/jira/browse/JENA-1292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15875028#comment-15875028
 ] 

François-Paul Servant edited comment on JENA-1292 at 2/20/17 9:02 PM:
----------------------------------------------------------------------

if just making the change suggested at

https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/riot/writer/JsonLDWriter.java#L402

the "@vocab" is added to the "@context", everything else remaining unchanged. 
This is correct, but we keep a long context.

We would like to remove from the context the description of props that belong 
to the ns corresponding to the empty prefix. This can be done near :

https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/riot/writer/JsonLDWriter.java#L322

with something such as:

if (p.getNameSpace().equals(atVocabNS)) {

    return;

}


But then, we do not benefit from the knowledge about the properties that belong 
to the @vocab that can be extracted from the serialized model. For instance, if 
@vocab is schema.org, and assuming all values of the "propInShemaDotOrg " are 
resources, we had statements output such as :

"propInShemaDotOrg" : "http://a.com/aResource";,

but we would now get 

"propInShemaDotOrg" : {

      "@id" : "http://a.com/aResource";

},

What could be done is to pass to the JSON-LD API the same context as now (that 
is, including the description of properties that belong to the @vocab) to have 
it use this knowledge in computing the output, and then to replace the @context 
in the output, with a version of it that contains the "@vocab" line, but not 
the descriptions of corresponding properties - basically, doing in JsonLDWriter 
what I did in the workaround I gave in my answer on dev list: changing the 
@context in the output)

But actually, this is probably not a good idea. We do not know what the 
namespace really contains regarding the definition of props. It can be false to 
have things such as

"propInShemaDotOrg" : "http://a.com/aResource";,

in the output, because we do not know the range of propInShemaDotOrg. So, if we 
decide to not include the definition of props that belong to the @vocab in the 
context, we must admit that we will get things such as 

"propInShemaDotOrg" : {

      "@id" : "http://a.com/aResource";

},

in the output.


was (Author: fps61):
if just making the change suggested at

https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/riot/writer/JsonLDWriter.java#L402

the "@vocab" is added to the "@context", everything else remaining unchanged. 
This is correct, but we keep a long context.

We would like to remove from the context the description of props that belong 
to the ns corresponding to the empty prefix. This can be done near :

https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/riot/writer/JsonLDWriter.java#L322

with something such as:

if (p.getNameSpace().equals(atVocabNS)) {

    return;

}


But then, we do not benefit from the knowledge about the properties that belong 
to the @vocab that can be extracted from the serialized model. For instance, if 
@vocab is schema.org, and assuming all values of the "propInShemaDotOrg " are 
resources, we had statements output such as :

"propInShemaDotOrg" : "http://a.com/aResource";,

but we would now get 

"propInShemaDotOrg" : {

      "@id" : "http://a.com/aResource";

},

What could be done is to pass to the JSON-LD API the same context as now (that 
is, including the description of properties that belong to the @vocab) to have 
it use this knowledge in computing the output, and then to replace the @context 
in the output, with a version of it that contains the "@vocab" line, but not 
the descriptions of corresponding properties - basically, doing in JsonLDWriter 
what I did in the workaround I gave in my answer on dev list: changing the 
@context in the output)


> almost impossible to get @vocab prefix in JsonLDContext
> -------------------------------------------------------
>
>                 Key: JENA-1292
>                 URL: https://issues.apache.org/jira/browse/JENA-1292
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: RIOT
>    Affects Versions: Jena 3.2.0
>         Environment: Linux, Ecplise 4.2
>            Reporter: Elie Roux
>            Priority: Minor
>              Labels: newbie
>
> It's almost impossible to get the empty prefix of a model mapped to Json-ld 
> "@vocab" context, to do so I have to rebuild a context from scratch, which is 
> not really nice...
> The fix should be a one-liner, see comment on
> https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/riot/writer/JsonLDWriter.java#L402



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to