Why multiply with 5 in the IRI ? Just to spread it from a hash of the IRI
and its String?

It means the "hashcode of the data type" in Literal can be slightly
ambiguous. Perhaps "hashcode of the #getDataType() IRI" ? It also hammers
in through getDataType that every Literal has a datatype, e.g. it is always
added to the hash.

BTW, hashcode of the Optional language is conveniently compliant with "plus
hash code of language if present", so no similar ambiguity there.

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#hashCode--
On 24 Mar 2015 12:25, "Reto Gmür" <[email protected]> wrote:

On Mon, Mar 23, 2015 at 12:04 PM, Andy Seaborne <[email protected]> wrote:

> On 23/03/15 10:25, Reto Gmür wrote:
>
>> Right now the API on Github says nothing about the identity and hascode
of
>> any term. In order to have interoperable it is essential to define the
>> value of hashcode and the identity conditions for the rdf-terms which are
>> not locally scoped, i.e. for IRIs and Literals.
>>
>
> +1
>
>
>> I suggest to take the definitions from the clerezza rdf commons.
>>
>
> Absent active JIRA at the moment, could you email here please?
>
> Given Peter is spending time on his implementation, this might be quite
> useful to him.
>
> Sure.

Literal: the hash code of the lexical form plus the hash code of the
datatype plus if the literal has a language the hash code of the language

https://git-wip-us.apache.org/repos/asf?p=clerezza-rdf-core.git;a=blob;f=api/src/main/java/org/apache/commons/rdf/Literal.java;h=cf5e1eea2d848a57e4e338a3d208f127103d39a4;hb=HEAD

And the IRI: 5 + the hashcode of the string

https://git-wip-us.apache.org/repos/asf?p=clerezza-rdf-core.git;a=blob;f=api/src/main/java/org/apache/commons/rdf/Iri.java;h=e1ef0f7d21a3cb668b4a3b2f2aae7e2f642b68dd;hb=HEAD

Reto

        Andy
>
>
>
>> Reto
>>
>> On Mon, Mar 23, 2015 at 10:18 AM, Stian Soiland-Reyes <[email protected]>
>> wrote:
>>
>>  OK - I can see on settling BlankNode equality can take some more time
>>> (also considering the SPARQL example).
>>>
>>> So then we must keep the "internalIdentifier" and the abstract concept
>>> of the "local scope" for the next release.
>>>
>>> In which case this one should also be applied:
>>>
>>> https://github.com/commons-rdf/commons-rdf/pull/48/files
>>> and perhaps:
>>> https://github.com/commons-rdf/commons-rdf/pull/61/files
>>>
>>>
>>>
>>> I would then need to fix simple GraphImpl.add() to clone and change
>>> the local scope of the BlankNodes:
>>> .. as otherwise it would wrongly merge graph1.b1 and graph2.b1 (in
>>> both having the same internalIdentifier and the abstract Local Scope
>>> of being in the same Graph). This can happen if doing say a copy from
>>> one graph to another.
>>>
>>> Raised and detailed in
>>> https://github.com/commons-rdf/commons-rdf/issues/66
>>> .. adding this to the tests sounds crucial, and would help us later
>>> when sorting this.
>>>
>>>
>>> This is in no way a complete resolution. (New bugs would arise, e.g.
>>> you could add a triple with a BlankNode and then not remove it
>>> afterwards with the same arguments).
>>>
>>>
>>>
>>>
>>>
>>> On 22 March 2015 at 21:00, Peter Ansell <[email protected]> wrote:
>>>
>>>> +1
>>>>
>>>> Although it is not urgent to release a 1.0 version, it is urgent to
>>>> release (and keep releasing often) what we have changed since 0.0.2 so
>>>> we can start experimenting with it, particularly since I have started
>>>> more intently on Sesame 4 in the last few weeks. Stians pull requests
>>>> to change the BNode situation could wait until after 0.0.3 is
>>>> released, at this point.
>>>>
>>>> Cheers,
>>>>
>>>> Peter
>>>>
>>>> On 21 March 2015 at 22:37, Andy Seaborne <[email protected]> wrote:
>>>>
>>>>> I agree with Sergio that releasing something is important.
>>>>>
>>>>> We need to release, then independent groups can start to build on it.
>>>>> We
>>>>> have grounded requirements and a wider community.
>>>>>
>>>>>          Andy
>>>>>
>>>>>
>>>>> On 21/03/15 09:10, Reto Gmür wrote:
>>>>>
>>>>>>
>>>>>> Hi Sergio,
>>>>>>
>>>>>> I don't see where an urgent agenda comes from. Several RDF APIs are
>>>>>>
>>>>> there
>>>
>>>> so a new API essentially needs to be better rather than done with
>>>>>>
>>>>> urgency.
>>>
>>>>
>>>>>> The SPARQL implementation is less something that need to be part of
>>>>>> the
>>>>>> first release but something that helps validating the API proposal.
We
>>>>>> should validate our API against many possible usecases and then
discus
>>>>>> which are more important to support. In my opinion for an RDF API it
>>>>>> is
>>>>>> more important that it can be used with remote repositories over
>>>>>>
>>>>> standard
>>>
>>>> protocols than support for hadoop style processing across many machines
>>>>>> [1], but maybe we can support both usecases.
>>>>>>
>>>>>> In any case I think its good to have prototypical implementation of
>>>>>> usecases to see what API features are needed and which are
>>>>>>
>>>>> problematic. So
>>>
>>>> I would encourage to write prototype usecases where a hadoop style
>>>>>> processing shows the need for exposed blank node ID or a prototype
>>>>>>
>>>>> showing
>>>
>>>> that that IRI is better an interface than a class, etc.
>>>>>>
>>>>>> At the end we need to decide on the API features based on the
usecases
>>>>>> they
>>>>>> are required by respectively compatible with. But it's hard to see
the
>>>>>> requirements without prototypical code.
>>>>>>
>>>>>> Cheers,
>>>>>> Reto
>>>>>>
>>>>>> 1.
>>>>>>
>>>>>>  https://github.com/commons-rdf/commons-rdf/pull/48#
>>> issuecomment-72689214
>>>
>>>>
>>>>>> On Fri, Mar 20, 2015 at 8:30 PM, Sergio Fernández <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>  I perfectly understand what you target. But still, FMPOV still out
of
>>>>>>>
>>>>>> our
>>>
>>>> urgent agenda. Not because it is not interesting, just because more
>>>>>>> urgent
>>>>>>> things to deal with. I think the most important think is to get
>>>>>>>
>>>>>> running
>>>
>>>> with what we have, and get a release out. But, as I said, we can
>>>>>>>
>>>>>> discuss
>>>
>>>> it.
>>>>>>>
>>>>>>>
>>>>>>> On 20/03/15 19:10, Reto Gmür wrote:
>>>>>>>
>>>>>>>  Just a little usage example to illustrate Stian's point:
>>>>>>>>
>>>>>>>> public class Main {
>>>>>>>>        public static void main(String... args) {
>>>>>>>>            Graph g = new SparqlGraph("http://dbpedia.org/sparql";);
>>>>>>>>            Iterator<Triple> iter = g.filter(new Iri("
>>>>>>>> http://dbpedia.org/ontology/Planet";),
>>>>>>>>                    new
>>>>>>>> Iri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type
>>>>>>>> "),
>>>>>>>> null);
>>>>>>>>            while (iter.hasNext()) {
>>>>>>>>                System.out.println(iter.next().getObject());
>>>>>>>>            }
>>>>>>>>        }
>>>>>>>> }
>>>>>>>>
>>>>>>>> I think with Stian's version using streams the above could be
>>>>>>>> shorter
>>>>>>>> and
>>>>>>>> nicer. But the important part is that the above allows to use
>>>>>>>>
>>>>>>> dbpedia as
>>>
>>>> a
>>>>>>>> graph without worrying about sparql.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Reto
>>>>>>>>
>>>>>>>> On Fri, Mar 20, 2015 at 4:16 PM, Stian Soiland-Reyes <
>>>>>>>>
>>>>>>> [email protected]>
>>>
>>>> wrote:
>>>>>>>>
>>>>>>>>    I think a query interface as you say is orthogonal to Reto's
>>>>>>>>
>>>>>>>>>
>>>>>>>>> impl.sparql module - which is trying to be an implementation of
RDF
>>>>>>>>> Commons that is backed only by a remote SPARQL endpoint.  Thus it
>>>>>>>>> touches on important edges like streaming and blank node
>>>>>>>>> identities.
>>>>>>>>>
>>>>>>>>> It's not a SPARQL endpoint backed by RDF Commons! :-)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 20 March 2015 at 10:58, Sergio Fernández <[email protected]>
>>>>>>>>>
>>>>>>>> wrote:
>>>
>>>>
>>>>>>>>>  Hi Reto,
>>>>>>>>>>
>>>>>>>>>> yes, that was a deliberated decision on early phases. I'd need to
>>>>>>>>>>
>>>>>>>>> look
>>>
>>>> it
>>>>>>>>>> up, I do not remember the concrete issue.
>>>>>>>>>>
>>>>>>>>>> Just going a bit deeper into the topic, in querying we are
talking
>>>>>>>>>>
>>>>>>>>> not
>>>
>>>>
>>>>>>>>>>  only
>>>>>>>>>
>>>>>>>>>  about providing native support to query Graph instance, but also
>>>>>>>>>> to
>>>>>>>>>>
>>>>>>>>>>  provide
>>>>>>>>>
>>>>>>>>>  common interfaces to interact with the results.
>>>>>>>>>>
>>>>>>>>>> The idea was to keep the focus on RDF 1.1 concepts before moving
>>>>>>>>>> to
>>>>>>>>>>
>>>>>>>>>>  query.
>>>>>>>>>
>>>>>>>>>  Personally I'd prefer to keep that scope for the first incubator
>>>>>>>>>> release,
>>>>>>>>>> and then start to open discussions about such kind of threads.
But
>>>>>>>>>>
>>>>>>>>> of
>>>
>>>>
>>>>>>>>>>  course
>>>>>>>>>
>>>>>>>>>  we can vote to change that approach.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 17/03/15 11:05, Reto Gmür wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Hi Sergio,
>>>>>>>>>>>
>>>>>>>>>>> I'm not sure which deliberate decision you are referring to, is
>>>>>>>>>>> it
>>>>>>>>>>> Issue
>>>>>>>>>>> #35 in Github?
>>>>>>>>>>>
>>>>>>>>>>> Anyway, the impl.sparql code is not about extending the API to
>>>>>>>>>>>
>>>>>>>>>> allow
>>>
>>>> running queries on a graph, in fact the API isn't extended at all.
>>>>>>>>>>> It's
>>>>>>>>>>>
>>>>>>>>>>>  an
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  implementation of the API which is backed by a SPARQL endpoint.
>>>>>>>>>>
>>>>>>>>> Very
>>>
>>>>
>>>>>>>>>>>
>>>>>>>>>>>  often
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  the triple store doesn't run in the same VM as the client and so
>>>>>>>>>>
>>>>>>>>> it is
>>>
>>>>
>>>>>>>>>>> necessary that implementation of the API speak to a remote
triple
>>>>>>>>>>> store.
>>>>>>>>>>> This can use some proprietary protocols or standard SPARQL, this
>>>>>>>>>>>
>>>>>>>>>> is
>>>
>>>> an
>>>>>>>>>>> implementation for SPARQL and can thus be used against any
SPARQL
>>>>>>>>>>> endpoint.
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Reto
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Mar 17, 2015 at 7:41 AM, Sergio Fernández <
>>>>>>>>>>>
>>>>>>>>>> [email protected]>
>>>
>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>    Hi Reto,
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> thanks for updating us with the status from Clerezza.
>>>>>>>>>>>>
>>>>>>>>>>>> In the current Commons RDF API we delivery skipped querying for
>>>>>>>>>>>>
>>>>>>>>>>> the
>>>
>>>>
>>>>>>>>>>>>  early
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  versions.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Although I'd prefer to keep this approach in the initial steps
>>>>>>>>>>>> at
>>>>>>>>>>>> ASF
>>>>>>>>>>>>
>>>>>>>>>>>>  (I
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  hope we can import the code soon...), that's for sure one of the
>>>>>>>>>>
>>>>>>>>> next
>>>
>>>>
>>>>>>>>>>>> points to discuss in the project, where all that experience is
>>>>>>>>>>>>
>>>>>>>>>>>>  valuable.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>  Cheers,
>>>>>>>>>>>>
>>>>>>>>>>>> On 16/03/15 13:02, Reto Gmür wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>    Hello,
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> With the new repository the clerezza rdf commons previously in
>>>>>>>>>>>>>
>>>>>>>>>>>> the
>>>
>>>> commons
>>>>>>>>>>>>> sandbox are now at:
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://git-wip-us.apache.org/repos/asf/clerezza-rdf-core.git
>>>>>>>>>>>>>
>>>>>>>>>>>>> I will compare that code with the current status of the code
in
>>>>>>>>>>>>>
>>>>>>>>>>>> the
>>>
>>>> incubating rdf-commons project in a later mail.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Now I would like to point to your attention a big step forward
>>>>>>>>>>>>> towards
>>>>>>>>>>>>> CLEREZZA-856. The impl.sparql modules provide an
implementation
>>>>>>>>>>>>>
>>>>>>>>>>>> of
>>>
>>>> the
>>>>>>>>>>>>> API
>>>>>>>>>>>>> on top of a SPARQL endpoint. Currently it only supports read
>>>>>>>>>>>>> access.
>>>>>>>>>>>>>
>>>>>>>>>>>>>  For
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  usage example see the tests in
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>> /src/test/java/org/apache/commons/rdf/impl/sparql (
>>>>>>>>>>>>> https://git-wip-us.apache.org/repos/asf?p=clerezza-rdf-core.
>>>>>>>>>>>>> git;a=tree;f=impl.sparql/src/test/java/org/apache/commons/
>>>>>>>>>>>>>
>>>>>>>>>>>>>  rdf/impl/sparql;h=cb9c98bcf427452392e74cd162c08a
>>> b308359c13;hb=HEAD
>>>
>>>> )
>>>>>>>>>>>>>
>>>>>>>>>>>>> The hard part was supporting BlankNodes. The current
>>>>>>>>>>>>>
>>>>>>>>>>>> implementation
>>>
>>>> handles
>>>>>>>>>>>>> them correctly even in tricky situations, however the current
>>>>>>>>>>>>>
>>>>>>>>>>>> code
>>>
>>>> is
>>>>>>>>>>>>> not
>>>>>>>>>>>>> optimized for performance yet. As soon as BlankNodes are
>>>>>>>>>>>>>
>>>>>>>>>>>> involved
>>>
>>>> many
>>>>>>>>>>>>> queries have to be sent to the backend. I'm sure some SPARQL
>>>>>>>>>>>>>
>>>>>>>>>>>> wizard
>>>
>>>> could
>>>>>>>>>>>>> help making things more efficient.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Since SPARQL is the only standardized methods to query RDF
>>>>>>>>>>>>>
>>>>>>>>>>>> data, I
>>>
>>>>
>>>>>>>>>>>>>  think
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  being able to façade an RDF Graph accessible via SPARQL is an
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  important
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  usecase for an RDF API, so it would be good to also have an
SPARQL
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>> backed
>>>>>>>>>>>>> implementation of the API proposal in the incubating
>>>>>>>>>>>>> commons-rdf
>>>>>>>>>>>>> repository.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cheers,
>>>>>>>>>>>>> Reto
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>    --
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Sergio Fernández
>>>>>>>>>>>> Partner Technology Manager
>>>>>>>>>>>> Redlink GmbH
>>>>>>>>>>>> m: +43 660 2747 925
>>>>>>>>>>>> e: [email protected]
>>>>>>>>>>>> w: http://redlink.co
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>  --
>>>>>>>>>> Sergio Fernández
>>>>>>>>>> Partner Technology Manager
>>>>>>>>>> Redlink GmbH
>>>>>>>>>> m: +43 660 2747 925
>>>>>>>>>> e: [email protected]
>>>>>>>>>> w: http://redlink.co
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Stian Soiland-Reyes
>>>>>>>>> Apache Taverna (incubating), Apache Commons RDF (incubating)
>>>>>>>>> http://orcid.org/0000-0001-9842-9718
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>  --
>>>>>>> Sergio Fernández
>>>>>>> Partner Technology Manager
>>>>>>> Redlink GmbH
>>>>>>> m: +43 660 2747 925
>>>>>>> e: [email protected]
>>>>>>> w: http://redlink.co
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>
>>>
>>> --
>>> Stian Soiland-Reyes
>>> Apache Taverna (incubating), Apache Commons RDF (incubating)
>>> http://orcid.org/0000-0001-9842-9718
>>>
>>>
>>
>

Reply via email to