[
https://issues.apache.org/jira/browse/COMMONSRDF-13?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14509129#comment-14509129
]
Stian Soiland-Reyes commented on COMMONSRDF-13:
-----------------------------------------------
I think internalIdentifier() has moved a bit out of its own name - in that it
has become almost like a skolemize() method that we can use to get (one of) a
global identity for the blank node, which we see is useful in distributed
systems - however this is not (necessarily) a URI, just unique pr blank node
across responses to internalIdentfier().
I agree that simply removing the method would also remove the contention - but
I also see that it is useful, as otherwise blank nodes can't be compared other
than by keeping the JVM objects around. Being able to create localized blank
nodes given a name within an RDFTermFactory is also very useful, e.g. for
streaming parsers and for straight forward client code (e.g. you don't need to
decide on a single place in your code to create your blank node - just keep the
factory instance).
To me, the question comes down to who is it "internal" for, and who is meant to
be calling that method for which purpose. Is it mainly for interoperability
between different implementations? (e.g. to be able to recognize an older
'foreign' BlankNode without needing to keep the old object)?
As of know this is still a bit unclear - would a client of Commons RDF be using
this method, or should it be a protected method just for the implementations?
> Demo-code to show advantages of exposed Blank Node identifier
> -------------------------------------------------------------
>
> Key: COMMONSRDF-13
> URL: https://issues.apache.org/jira/browse/COMMONSRDF-13
> Project: Apache Commons RDF
> Issue Type: Improvement
> Reporter: Reto Gmür
>
> Like many APIs but unlike the RDF Data model the BlankNode interface exposes
> an internal identifier. BlankNodes with the same identifier are mandated to
> be equals if the are created with the same RDFTermFactory.
> The concept of identifier has a match in many concrete syntaxes, however the
> usage in the API is different, as a graph may have different BNodes with the
> same identifier if they are created by different factories.
> The blank node identifier has been causing difficulties and been the subject
> to discussions. It is particularly problematic onbackend that do not expose
> such identifiers but which allow modifications (e.g. SPARQL backend), see
> also:
> http://mail-archives.apache.org/mod_mbox/commonsrdf-dev/201503.mbox/%3CCALvhUEXSSwO-Udj6ngdedVQuPC6n=+983ubnkyobs2psy5k...@mail.gmail.com%3E.
> To allow some evidence based discussion with this issue I ask proponent of
> exposing the blank node ID to provide some minimal code examples showing the
> advantage of having the ID exposed, i.e. code that could not easily be
> written without the BlankNode.internalIdentifier() method and the
> RDFTermFGactory.createBlankNode(String identifier) method.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)