You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (Jira)" <ji...@apache.org> on 2021/09/23 17:16:00 UTC

[jira] [Commented] (JENA-2169) Dataset interface should support blank node labels for graphs

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

Andy Seaborne commented on JENA-2169:
-------------------------------------

It is supported, just not in Dataset interface. DatasetGraph is happy with them.

I think adding {{getNamedModel(Resource)}} os better because "labelled" isn't  term in the standards (and Java is a statically typed language :-)).

That just leaves the iterator {{public Iterator<Resource> listGraphNames()}} would work.

If you'd like to do a PR that would be great - it would be easier to hold off until [PR 1030|https://github.com/apache/jena/pull/1030] is merged because that touches a lot of files. We're just waiting to make sure 4.2.0 does have an serious bugs.

 There are only 2 implementations of Dataset (and DatasetOne can be marked deprecated and for removal because DatasetGraphOne exists).

> Dataset interface should support blank node labels for graphs
> -------------------------------------------------------------
>
>                 Key: JENA-2169
>                 URL: https://issues.apache.org/jira/browse/JENA-2169
>             Project: Apache Jena
>          Issue Type: Improvement
>            Reporter: Jan Martin Keil
>            Priority: Major
>
> The Recommendations [RDF 1.1 TriG|https://www.w3.org/TR/trig/#sec-graph-statements] and [RDF 1.1 N-Quads|https://www.w3.org/TR/n-quads/#simple-triples] permit blank nodes as graph labels in datasets. However, this is not supported in Apache Jena. To add support for blank node labels, the interface {color:#0747a6}{{org.apache.jena.query.Dataset}}{color} and it's implementing classes would need new methods corresponding to the following methods:
>  * {color:#0747a6}{{public Model getNamedModel(String uri)}}{color} -> e.g. {color:#0747a6}{{public Model getLabeledModel(Resource label)}}{color}
>  * {color:#0747a6}{{public Dataset addNamedModel(String uri, Model model);}}{color} -> e.g. {color:#0747a6}{{public Dataset addLabeledModel(Resource label, Model model);}}{color}
>  * {color:#0747a6}{{public Dataset removeNamedModel(String uri);}}{color} -> e.g. {color:#0747a6}{{public Dataset removeLabeledModel(Resource label);}}{color}
>  * {color:#0747a6}{{public Dataset replaceNamedModel(String uri, Model model);}}{color} -> e.g. {color:#0747a6}{{public Dataset replaceLabeledModel(Resource label, Model model);}}{color}
>  * {color:#0747a6}{{public Iterator<String> listNames()}}{color} -> e.g. {color:#0747a6}{{public Iterator<Resource> listGraphLabels()}}{color}
> This has real *use cases*: If labeled graphs are used to track the provenance of statements, as e.g. proposed in the Working Group Note [Data on the Web Best Practices: Data Quality Vocabulary|https://www.w3.org/TR/vocab-dqv/], minting an URL is not always appropriate. The current *workaround* is to mint a IRI, e.g. based on an UUID.
>  However, there might also be *drawbacks*: The [SPARQL 1.1 Recomendation|https://www.w3.org/TR/sparql11-query/#rGraphRef] permits only IRIs as graph labels. Graphs with blank node labels might become inaccessible within SPARQL. But that is probably (didn't test it yet) the same situation as after importing TriG or N-Quads files with blank node graph labels. (A shortcoming of SPARQL 1.1 worth to put on [https://github.com/w3c/sparql-12]?)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)