Yes, I meant as a good thing, we do not need to document using the optional
or the value behind it in the hashcode, as either would give same result.
On 26 Mar 2015 01:52, "Peter Ansell" <[email protected]> wrote:

> Hi Stian,
>
> We would be best to not use Optional in the hashCode definition,
> incase people are actually storing "null" or another sentinel value
> internally and only adding Optional on to satisfy our API. Otherwise
> they will need to refer to Optional each time to get the hashCode, or
> if they are using immutable objects, they would need to refer to it
> for each object creation, both of which would be sub-optimal if they
> are trying to optimise that part of their system.
>
> Cheers,
>
> Peter
>
>
> On 26 March 2015 at 12:21, Stian Soiland-Reyes <[email protected]> wrote:
> > 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