Skip to content

Instantly share code, notes, and snippets.

@stain
Created March 26, 2015 11:29
Show Gist options
  • Save stain/836e8c8ccc6396e1ea55 to your computer and use it in GitHub Desktop.
Save stain/836e8c8ccc6396e1ea55 to your computer and use it in GitHub Desktop.
Delivered-To: stian@s11.no
Received: by 10.28.194.7 with SMTP id s7csp284007wmf;
Thu, 26 Mar 2015 01:57:09 -0700 (PDT)
X-Received: by 10.70.92.132 with SMTP id cm4mr24666356pdb.18.1427360228839;
Thu, 26 Mar 2015 01:57:08 -0700 (PDT)
Return-Path: <>
Received: from mail.apache.org (hermes.apache.org. [140.211.11.3])
by mx.google.com with SMTP id j12si7469396pdm.58.2015.03.26.01.57.08
for <stian@s11.no>;
Thu, 26 Mar 2015 01:57:08 -0700 (PDT)
Received-SPF: none (google.com: mail.apache.org does not designate permitted sender hosts) client-ip=140.211.11.3;
Authentication-Results: mx.google.com;
spf=none (google.com: mail.apache.org does not designate permitted sender hosts) smtp.mail=
Message-Id: <5513c9e4.2c2d460a.35fe.5ba7SMTPIN_ADDED_MISSING@mx.google.com>
Received: (qmail 10779 invoked by uid 500); 26 Mar 2015 08:57:07 -0000
Delivered-To: apmail-stain@apache.org
Received: (qmail 10776 invoked for bounce); 26 Mar 2015 08:57:07 -0000
Date: 26 Mar 2015 08:57:07 -0000
From: MAILER-DAEMON@apache.org
To: stain@apache.org
Subject: failure notice
Hi. This is the qmail-send program at apache.org.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<dev@commonsrdf.incubator.apache.org>:
192.87.106.230 failed after I sent the message.
Remote host said: 552 spam score (7.8) exceeded threshold (HTML_MESSAGE,RCVD_IN_BRBL_LASTEXT,RCVD_IN_XBL
--- Below this line is a copy of the message.
Return-Path: <stain@apache.org>
Received: (qmail 8875 invoked by uid 99); 26 Mar 2015 08:55:25 -0000
Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15)
by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Mar 2015 08:55:25 +0000
Received: from mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178])
by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 9FF311A0466
for <dev@commonsrdf.incubator.apache.org>; Thu, 26 Mar 2015 08:55:24 +0000 (UTC)
Received: by wibbg6 with SMTP id bg6so55566899wib.0
for <dev@commonsrdf.incubator.apache.org>; Thu, 26 Mar 2015 01:55:23 -0700 (PDT)
X-Gm-Message-State: ALoCoQnh2B0H7VJ+wiEq8YCQSLH71ncpU6yQ9Ol2NnOy+OJSBob1/PCroERIANknl++A2PzAvsnx
MIME-Version: 1.0
X-Received: by 10.194.220.7 with SMTP id ps7mr26719845wjc.84.1427360123183;
Thu, 26 Mar 2015 01:55:23 -0700 (PDT)
Received: by 10.28.29.8 with HTTP; Thu, 26 Mar 2015 01:55:23 -0700 (PDT)
X-Originating-IP: [92.40.249.67]
Received: by 10.28.29.8 with HTTP; Thu, 26 Mar 2015 01:55:23 -0700 (PDT)
In-Reply-To: <CAGYFOCS+5YiTK9MS114Pj8kDQ-ZQ9ShWvn4DGR4H9RWaOceB4g@mail.gmail.com>
References: <CAMBJEmWC-dV6p1HZ7cvkKJtE0jks-EZJJedK92KG49SnX-oTAA@mail.gmail.com>
<CAMBJEmVVsO+D6oqMr6+k=MFWSs4Krv2W23wEbzb7hErQbiQ16g@mail.gmail.com>
<CAGYFOCS+5YiTK9MS114Pj8kDQ-ZQ9ShWvn4DGR4H9RWaOceB4g@mail.gmail.com>
Date: Thu, 26 Mar 2015 08:55:23 +0000
Message-ID: <CAMBJEmVLfB2_VV20d4WMZS3AGd4ai-FKAXX4+E+2OqXr6D=skQ@mail.gmail.com>
Subject: Re: Hashcode definition
From: Stian Soiland-Reyes <stain@apache.org>
To: dev <dev@commonsrdf.incubator.apache.org>
Content-Type: multipart/alternative; boundary=001a11c1b4241bfd0d05122d2dd0
--001a11c1b4241bfd0d05122d2dd0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Likewise I would also like the IRI hashcode to be equal to its iriString
hashcode, so that a similar optimization is possible for the datatype.
On 26 Mar 2015 01:52, "Peter Ansell" <ansell.peter@gmail.com> 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 <stain@apache.org> wrote:
> > Why multiply with 5 in the IRI ? Just to spread it from a hash of the I=
RI
> > 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 hamme=
rs
> > 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#hashCod=
e--
> > On 24 Mar 2015 12:25, "Reto Gm=C3=BCr" <reto@apache.org> wrote:
> >
> > On Mon, Mar 23, 2015 at 12:04 PM, Andy Seaborne <andy@apache.org> wrote=
:
> >
> >> On 23/03/15 10:25, Reto Gm=C3=BCr wrote:
> >>
> >>> Right now the API on Github says nothing about the identity and hasco=
de
> > of
> >>> any term. In order to have interoperable it is essential to define th=
e
> >>> 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 quit=
e
> >> 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 langua=
ge
> >
> >
> https://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core.git;a=3Dblo=
b;f=3Dapi/src/main/java/org/apache/commons/rdf/Literal.java;h=3Dcf5e1eea2d8=
48a57e4e338a3d208f127103d39a4;hb=3DHEAD
> >
> > And the IRI: 5 + the hashcode of the string
> >
> >
> https://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core.git;a=3Dblo=
b;f=3Dapi/src/main/java/org/apache/commons/rdf/Iri.java;h=3De1ef0f7d21a3cb6=
68b4a3b2f2aae7e2f642b68dd;hb=3DHEAD
> >
> > Reto
> >
> > Andy
> >>
> >>
> >>
> >>> Reto
> >>>
> >>> On Mon, Mar 23, 2015 at 10:18 AM, Stian Soiland-Reyes <
> stain@apache.org>
> >>> wrote:
> >>>
> >>> OK - I can see on settling BlankNode equality can take some more tim=
e
> >>>> (also considering the SPARQL example).
> >>>>
> >>>> So then we must keep the "internalIdentifier" and the abstract conce=
pt
> >>>> 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 fro=
m
> >>>> 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 <ansell.peter@gmail.com>
> 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 start=
ed
> >>>>> more intently on Sesame 4 in the last few weeks. Stians pull reques=
ts
> >>>>> 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 <andy@apache.org> 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=C3=BCr wrote:
> >>>>>>
> >>>>>>>
> >>>>>>> Hi Sergio,
> >>>>>>>
> >>>>>>> I don't see where an urgent agenda comes from. Several RDF APIs a=
re
> >>>>>>>
> >>>>>> 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 proposa=
l.
> > 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 prototyp=
e
> >>>>>>>
> >>>>>> 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 se=
e
> > 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=C3=A1ndez <
> wikier@apache.org>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>> I perfectly understand what you target. But still, FMPOV still o=
ut
> > 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=C3=BCr wrote:
> >>>>>>>>
> >>>>>>>> Just a little usage example to illustrate Stian's point:
> >>>>>>>>>
> >>>>>>>>> public class Main {
> >>>>>>>>> public static void main(String... args) {
> >>>>>>>>> Graph g =3D new SparqlGraph("http://dbpedia.org/spar=
ql
> ");
> >>>>>>>>> Iterator<Triple> iter =3D 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 <
> >>>>>>>>>
> >>>>>>>> stain@apache.org>
> >>>>
> >>>>> wrote:
> >>>>>>>>>
> >>>>>>>>> I think a query interface as you say is orthogonal to Reto's
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> impl.sparql module - which is trying to be an implementation o=
f
> > 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=C3=A1ndez <wikier@apach=
e.org>
> >>>>>>>>>>
> >>>>>>>>> wrote:
> >>>>
> >>>>>
> >>>>>>>>>> Hi Reto,
> >>>>>>>>>>>
> >>>>>>>>>>> yes, that was a deliberated decision on early phases. I'd nee=
d
> 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=C3=BCr 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 endpoin=
t.
> >>>>>>>>>>>
> >>>>>>>>>> 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=C3=A1ndez <
> >>>>>>>>>>>>
> >>>>>>>>>>> wikier@apache.org>
> >>>>
> >>>>> 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=C3=BCr wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> With the new repository the clerezza rdf commons previousl=
y
> 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 co=
de
> > 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 re=
ad
> >>>>>>>>>>>>>> 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=3Dclerezza-rdf-c=
ore
> .
> >>>>>>>>>>>>>> git;a=3Dtree;f=3Dimpl.sparql/src/test/java/org/apache/comm=
ons/
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> rdf/impl/sparql;h=3Dcb9c98bcf427452392e74cd162c08a
> >>>> b308359c13;hb=3DHEAD
> >>>>
> >>>>> )
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 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 SPAR=
QL
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> wizard
> >>>>
> >>>>> could
> >>>>>>>>>>>>>> help making things more efficient.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Since SPARQL is the only standardized methods to query RDF
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> data, I
> >>>>
> >>>>>
> >>>>>>>>>>>>>> think
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> being able to fa=C3=A7ade 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=C3=A1ndez
> >>>>>>>>>>>>> Partner Technology Manager
> >>>>>>>>>>>>> Redlink GmbH
> >>>>>>>>>>>>> m: +43 660 2747 925
> >>>>>>>>>>>>> e: sergio.fernandez@redlink.co
> >>>>>>>>>>>>> w: http://redlink.co
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>> --
> >>>>>>>>>>> Sergio Fern=C3=A1ndez
> >>>>>>>>>>> Partner Technology Manager
> >>>>>>>>>>> Redlink GmbH
> >>>>>>>>>>> m: +43 660 2747 925
> >>>>>>>>>>> e: sergio.fernandez@redlink.co
> >>>>>>>>>>> w: http://redlink.co
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> Stian Soiland-Reyes
> >>>>>>>>>> Apache Taverna (incubating), Apache Commons RDF (incubating)
> >>>>>>>>>> http://orcid.org/0000-0001-9842-9718
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>> --
> >>>>>>>> Sergio Fern=C3=A1ndez
> >>>>>>>> Partner Technology Manager
> >>>>>>>> Redlink GmbH
> >>>>>>>> m: +43 660 2747 925
> >>>>>>>> e: sergio.fernandez@redlink.co
> >>>>>>>> w: http://redlink.co
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> --
> >>>> Stian Soiland-Reyes
> >>>> Apache Taverna (incubating), Apache Commons RDF (incubating)
> >>>> http://orcid.org/0000-0001-9842-9718
> >>>>
> >>>>
> >>>
> >>
>
--001a11c1b4241bfd0d05122d2dd0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<p dir=3D"ltr">Likewise I would also like the IRI hashcode to be equal to i=
ts iriString hashcode, so that a similar optimization is possible for the d=
atatype.</p>
<div class=3D"gmail_quote">On 26 Mar 2015 01:52, &quot;Peter Ansell&quot; &=
lt;<a href=3D"mailto:ansell.peter@gmail.com">ansell.peter@gmail.com</a>&gt;=
wrote:<br type=3D"attribution"><blockquote class=3D"gmail_quote" style=3D"=
margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Stian,<br=
>
<br>
We would be best to not use Optional in the hashCode definition,<br>
incase people are actually storing &quot;null&quot; or another sentinel val=
ue<br>
internally and only adding Optional on to satisfy our API. Otherwise<br>
they will need to refer to Optional each time to get the hashCode, or<br>
if they are using immutable objects, they would need to refer to it<br>
for each object creation, both of which would be sub-optimal if they<br>
are trying to optimise that part of their system.<br>
<br>
Cheers,<br>
<br>
Peter<br>
<br>
<br>
On 26 March 2015 at 12:21, Stian Soiland-Reyes &lt;<a href=3D"mailto:stain@=
apache.org">stain@apache.org</a>&gt; wrote:<br>
&gt; Why multiply with 5 in the IRI ? Just to spread it from a hash of the =
IRI<br>
&gt; and its String?<br>
&gt;<br>
&gt; It means the &quot;hashcode of the data type&quot; in Literal can be s=
lightly<br>
&gt; ambiguous. Perhaps &quot;hashcode of the #getDataType() IRI&quot; ? It=
also hammers<br>
&gt; in through getDataType that every Literal has a datatype, e.g. it is a=
lways<br>
&gt; added to the hash.<br>
&gt;<br>
&gt; BTW, hashcode of the Optional language is conveniently compliant with =
&quot;plus<br>
&gt; hash code of language if present&quot;, so no similar ambiguity there.=
<br>
&gt;<br>
&gt; <a href=3D"https://docs.oracle.com/javase/8/docs/api/java/util/Optiona=
l.html#hashCode--" target=3D"_blank">https://docs.oracle.com/javase/8/docs/=
api/java/util/Optional.html#hashCode--</a><br>
&gt; On 24 Mar 2015 12:25, &quot;Reto Gm=C3=BCr&quot; &lt;<a href=3D"mailto=
:reto@apache.org">reto@apache.org</a>&gt; wrote:<br>
&gt;<br>
&gt; On Mon, Mar 23, 2015 at 12:04 PM, Andy Seaborne &lt;<a href=3D"mailto:=
andy@apache.org">andy@apache.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; On 23/03/15 10:25, Reto Gm=C3=BCr wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Right now the API on Github says nothing about the identity an=
d hascode<br>
&gt; of<br>
&gt;&gt;&gt; any term. In order to have interoperable it is essential to de=
fine the<br>
&gt;&gt;&gt; value of hashcode and the identity conditions for the rdf-term=
s which are<br>
&gt;&gt;&gt; not locally scoped, i.e. for IRIs and Literals.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; +1<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; I suggest to take the definitions from the clerezza rdf common=
s.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Absent active JIRA at the moment, could you email here please?<br>
&gt;&gt;<br>
&gt;&gt; Given Peter is spending time on his implementation, this might be =
quite<br>
&gt;&gt; useful to him.<br>
&gt;&gt;<br>
&gt;&gt; Sure.<br>
&gt;<br>
&gt; Literal: the hash code of the lexical form plus the hash code of the<b=
r>
&gt; datatype plus if the literal has a language the hash code of the langu=
age<br>
&gt;<br>
&gt; <a href=3D"https://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-co=
re.git;a=3Dblob;f=3Dapi/src/main/java/org/apache/commons/rdf/Literal.java;h=
=3Dcf5e1eea2d848a57e4e338a3d208f127103d39a4;hb=3DHEAD" target=3D"_blank">ht=
tps://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core.git;a=3Dblob;f=
=3Dapi/src/main/java/org/apache/commons/rdf/Literal.java;h=3Dcf5e1eea2d848a=
57e4e338a3d208f127103d39a4;hb=3DHEAD</a><br>
&gt;<br>
&gt; And the IRI: 5 + the hashcode of the string<br>
&gt;<br>
&gt; <a href=3D"https://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-co=
re.git;a=3Dblob;f=3Dapi/src/main/java/org/apache/commons/rdf/Iri.java;h=3De=
1ef0f7d21a3cb668b4a3b2f2aae7e2f642b68dd;hb=3DHEAD" target=3D"_blank">https:=
//git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core.git;a=3Dblob;f=3Dap=
i/src/main/java/org/apache/commons/rdf/Iri.java;h=3De1ef0f7d21a3cb668b4a3b2=
f2aae7e2f642b68dd;hb=3DHEAD</a><br>
&gt;<br>
&gt; Reto<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Andy<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; Reto<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, Mar 23, 2015 at 10:18 AM, Stian Soiland-Reyes &lt;<a h=
ref=3D"mailto:stain@apache.org">stain@apache.org</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;=C2=A0 OK - I can see on settling BlankNode equality can take s=
ome more time<br>
&gt;&gt;&gt;&gt; (also considering the SPARQL example).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; So then we must keep the &quot;internalIdentifier&quot; an=
d the abstract concept<br>
&gt;&gt;&gt;&gt; of the &quot;local scope&quot; for the next release.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; In which case this one should also be applied:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; <a href=3D"https://github.com/commons-rdf/commons-rdf/pull=
/48/files" target=3D"_blank">https://github.com/commons-rdf/commons-rdf/pul=
l/48/files</a><br>
&gt;&gt;&gt;&gt; and perhaps:<br>
&gt;&gt;&gt;&gt; <a href=3D"https://github.com/commons-rdf/commons-rdf/pull=
/61/files" target=3D"_blank">https://github.com/commons-rdf/commons-rdf/pul=
l/61/files</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I would then need to fix simple GraphImpl.add() to clone a=
nd change<br>
&gt;&gt;&gt;&gt; the local scope of the BlankNodes:<br>
&gt;&gt;&gt;&gt; .. as otherwise it would wrongly merge graph1.b1 and graph=
2.b1 (in<br>
&gt;&gt;&gt;&gt; both having the same internalIdentifier and the abstract L=
ocal Scope<br>
&gt;&gt;&gt;&gt; of being in the same Graph). This can happen if doing say =
a copy from<br>
&gt;&gt;&gt;&gt; one graph to another.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Raised and detailed in<br>
&gt;&gt;&gt;&gt; <a href=3D"https://github.com/commons-rdf/commons-rdf/issu=
es/66" target=3D"_blank">https://github.com/commons-rdf/commons-rdf/issues/=
66</a><br>
&gt;&gt;&gt;&gt; .. adding this to the tests sounds crucial, and would help=
us later<br>
&gt;&gt;&gt;&gt; when sorting this.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; This is in no way a complete resolution. (New bugs would a=
rise, e.g.<br>
&gt;&gt;&gt;&gt; you could add a triple with a BlankNode and then not remov=
e it<br>
&gt;&gt;&gt;&gt; afterwards with the same arguments).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On 22 March 2015 at 21:00, Peter Ansell &lt;<a href=3D"mai=
lto:ansell.peter@gmail.com">ansell.peter@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; +1<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Although it is not urgent to release a 1.0 version, it=
is urgent to<br>
&gt;&gt;&gt;&gt;&gt; release (and keep releasing often) what we have change=
d since 0.0.2 so<br>
&gt;&gt;&gt;&gt;&gt; we can start experimenting with it, particularly since=
I have started<br>
&gt;&gt;&gt;&gt;&gt; more intently on Sesame 4 in the last few weeks. Stian=
s pull requests<br>
&gt;&gt;&gt;&gt;&gt; to change the BNode situation could wait until after 0=
.0.3 is<br>
&gt;&gt;&gt;&gt;&gt; released, at this point.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Peter<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On 21 March 2015 at 22:37, Andy Seaborne &lt;<a href=
=3D"mailto:andy@apache.org">andy@apache.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; I agree with Sergio that releasing something is im=
portant.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; We need to release, then independent groups can st=
art to build on it.<br>
&gt;&gt;&gt;&gt;&gt;&gt; We<br>
&gt;&gt;&gt;&gt;&gt;&gt; have grounded requirements and a wider community.<=
br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Andy<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; On 21/03/15 09:10, Reto Gm=C3=BCr wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi Sergio,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; I don&#39;t see where an urgent agenda comes f=
rom. Several RDF APIs are<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; there<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; so a new API essentially needs to be better rather tha=
n done with<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; urgency.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; The SPARQL implementation is less something th=
at need to be part of<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; first release but something that helps validat=
ing the API proposal.<br>
&gt; We<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; should validate our API against many possible =
usecases and then<br>
&gt; discus<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; which are more important to support. In my opi=
nion for an RDF API it<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; more important that it can be used with remote=
repositories over<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; standard<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; protocols than support for hadoop style processing acr=
oss many machines<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; [1], but maybe we can support both usecases.<b=
r>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; In any case I think its good to have prototypi=
cal implementation of<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; usecases to see what API features are needed a=
nd which are<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; problematic. So<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I would encourage to write prototype usecases where a =
hadoop style<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; processing shows the need for exposed blank no=
de ID or a prototype<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; showing<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; that that IRI is better an interface than a class, etc=
.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; At the end we need to decide on the API featur=
es based on the<br>
&gt; usecases<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; they<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; are required by respectively compatible with. =
But it&#39;s hard to see<br>
&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; requirements without prototypical code.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Reto<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 <a href=3D"https://github.com/commons-rd=
f/commons-rdf/pull/48#" target=3D"_blank">https://github.com/commons-rdf/co=
mmons-rdf/pull/48#</a><br>
&gt;&gt;&gt;&gt; issuecomment-72689214<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Fri, Mar 20, 2015 at 8:30 PM, Sergio Fern=
=C3=A1ndez &lt;<a href=3D"mailto:wikier@apache.org">wikier@apache.org</a>&g=
t;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 I perfectly understand what you target. =
But still, FMPOV still out<br>
&gt; of<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; our<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; urgent agenda. Not because it is not interesting, just=
because more<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; urgent<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; things to deal with. I think the most impo=
rtant think is to get<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; running<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; with what we have, and get a release out. But, as I sa=
id, we can<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; discuss<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; it.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 20/03/15 19:10, Reto Gm=C3=BCr wrote:<b=
r>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 Just a little usage example to illus=
trate Stian&#39;s point:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; public class Main {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 public stat=
ic void main(String... args) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 Graph g =3D new SparqlGraph(&quot;<a href=3D"http://dbpedia.org/sparql"=
target=3D"_blank">http://dbpedia.org/sparql</a>&quot;);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 Iterator&lt;Triple&gt; iter =3D g.filter(new Iri(&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"http://dbpedia.org/ontology=
/Planet" target=3D"_blank">http://dbpedia.org/ontology/Planet</a>&quot;),<b=
r>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 new<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Iri(&quot;<a href=3D"http://www.w3.org=
/1999/02/22-rdf-syntax-ns#type" target=3D"_blank">http://www.w3.org/1999/02=
/22-rdf-syntax-ns#type</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;),<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; null);<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 while (iter.hasNext()) {<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 System.out.println(iter.next().getObject());<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I think with Stian&#39;s version using=
streams the above could be<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; shorter<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; nicer. But the important part is that =
the above allows to use<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; dbpedia as<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; a<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; graph without worrying about sparql.<b=
r>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Reto<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Fri, Mar 20, 2015 at 4:16 PM, Stian=
Soiland-Reyes &lt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"mailto:stain@apache.org">stain@=
apache.org</a>&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 I think a query interface=
as you say is orthogonal to Reto&#39;s<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; impl.sparql module - which is tryi=
ng to be an implementation of<br>
&gt; RDF<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Commons that is backed only by a r=
emote SPARQL endpoint.=C2=A0 Thus it<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; touches on important edges like st=
reaming and blank node<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; identities.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It&#39;s not a SPARQL endpoint bac=
ked by RDF Commons! :-)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 20 March 2015 at 10:58, Sergio =
Fern=C3=A1ndez &lt;<a href=3D"mailto:wikier@apache.org">wikier@apache.org</=
a>&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 Hi Reto,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; yes, that was a deliberated de=
cision on early phases. I&#39;d need to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; look<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; it<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; up, I do not remember the conc=
rete issue.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Just going a bit deeper into t=
he topic, in querying we are<br>
&gt; talking<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; not<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 only<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 about providing native suppo=
rt to query Graph instance, but also<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 provide<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 common interfaces to interac=
t with the results.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The idea was to keep the focus=
on RDF 1.1 concepts before moving<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 query.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 Personally I&#39;d prefer to=
keep that scope for the first incubator<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; release,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and then start to open discuss=
ions about such kind of threads.<br>
&gt; But<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; of<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 course<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 we can vote to change that a=
pproach.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 17/03/15 11:05, Reto Gm=C3=
=BCr wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi Sergio,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I&#39;m not sure which del=
iberate decision you are referring to, is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; it<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Issue<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; #35 in Github?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Anyway, the impl.sparql co=
de is not about extending the API to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; allow<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; running queries on a graph, in fact the API isn&#39;t =
extended at all.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It&#39;s<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 an<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 implementation of the API wh=
ich is backed by a SPARQL endpoint.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Very<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 often<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 the triple store doesn&#39;t=
run in the same VM as the client and so<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; it is<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; necessary that implementat=
ion of the API speak to a remote<br>
&gt; triple<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; store.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; This can use some propriet=
ary protocols or standard SPARQL, this<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; is<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; an<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; implementation for SPARQL =
and can thus be used against any<br>
&gt; SPARQL<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; endpoint.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Reto<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Tue, Mar 17, 2015 at 7:=
41 AM, Sergio Fern=C3=A1ndez &lt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"mailto:wikier@apach=
e.org">wikier@apache.org</a>&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 Hi Reto,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; thanks for updating us=
with the status from Clerezza.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; In the current Commons=
RDF API we delivery skipped querying for<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 early<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 versions.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Although I&#39;d prefe=
r to keep this approach in the initial steps<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; at<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ASF<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 (I<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 hope we can import the code =
soon...), that&#39;s for sure one of the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; next<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; points to discuss in t=
he project, where all that experience is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 valuable.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 16/03/15 13:02, Ret=
o Gm=C3=BCr wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 Hello,<br=
>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; With the new repos=
itory the clerezza rdf commons previously in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; commons<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; sandbox are now at=
:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https:/=
/git-wip-us.apache.org/repos/asf/clerezza-rdf-core.git" target=3D"_blank">h=
ttps://git-wip-us.apache.org/repos/asf/clerezza-rdf-core.git</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I will compare tha=
t code with the current status of the code<br>
&gt; in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; incubating rdf-commons project in a later mail.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Now I would like t=
o point to your attention a big step forward<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; towards<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; CLEREZZA-856. The =
impl.sparql modules provide an<br>
&gt; implementation<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; of<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; API<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; on top of a SPARQL=
endpoint. Currently it only supports read<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; access.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 For<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 usage example see the tests =
in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; /src/test/java/org=
/apache/commons/rdf/impl/sparql (<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https:/=
/git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core" target=3D"_blank">h=
ttps://git-wip-us.apache.org/repos/asf?p=3Dclerezza-rdf-core</a>.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; git;a=3Dtree;f=3Di=
mpl.sparql/src/test/java/org/apache/commons/<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 rdf/impl/spa=
rql;h=3Dcb9c98bcf427452392e74cd162c08a<br>
&gt;&gt;&gt;&gt; b308359c13;hb=3DHEAD<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The hard part was =
supporting BlankNodes. The current<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; implementation<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; handles<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; them correctly eve=
n in tricky situations, however the current<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; code<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; not<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; optimized for perf=
ormance yet. As soon as BlankNodes are<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; involved<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; many<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; queries have to be=
sent to the backend. I&#39;m sure some SPARQL<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wizard<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; could<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; help making things=
more efficient.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Since SPARQL is th=
e only standardized methods to query RDF<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; data, I<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 think<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 being able to fa=C3=A7ade an=
RDF Graph accessible via SPARQL is an<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 important<br=
>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 usecase for an RDF API, so i=
t would be good to also have an<br>
&gt; SPARQL<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; backed<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; implementation of =
the API proposal in the incubating<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; commons-rdf<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; repository.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Reto<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 --<br=
>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Sergio Fern=C3=A1ndez<=
br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Partner Technology Man=
ager<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Redlink GmbH<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; m: <a href=3D"tel:%2B4=
3%20660%202747%20925" value=3D"+436602747925">+43 660 2747 925</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; e: <a href=3D"mailto:s=
ergio.fernandez@redlink.co">sergio.fernandez@redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; w: <a href=3D"http://r=
edlink.co" target=3D"_blank">http://redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Sergio Fern=C3=A1ndez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Partner Technology Manager<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Redlink GmbH<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; m: <a href=3D"tel:%2B43%20660%=
202747%20925" value=3D"+436602747925">+43 660 2747 925</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; e: <a href=3D"mailto:sergio.fe=
rnandez@redlink.co">sergio.fernandez@redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; w: <a href=3D"http://redlink.c=
o" target=3D"_blank">http://redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Stian Soiland-Reyes<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Apache Taverna (incubating), Apach=
e Commons RDF (incubating)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"http://orcid.org/0000-0=
001-9842-9718" target=3D"_blank">http://orcid.org/0000-0001-9842-9718</a><b=
r>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;=C2=A0 --<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Sergio Fern=C3=A1ndez<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Partner Technology Manager<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Redlink GmbH<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; m: <a href=3D"tel:%2B43%20660%202747%20925=
" value=3D"+436602747925">+43 660 2747 925</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; e: <a href=3D"mailto:sergio.fernandez@redl=
ink.co">sergio.fernandez@redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; w: <a href=3D"http://redlink.co" target=3D=
"_blank">http://redlink.co</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; Stian Soiland-Reyes<br>
&gt;&gt;&gt;&gt; Apache Taverna (incubating), Apache Commons RDF (incubatin=
g)<br>
&gt;&gt;&gt;&gt; <a href=3D"http://orcid.org/0000-0001-9842-9718" target=3D=
"_blank">http://orcid.org/0000-0001-9842-9718</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
</blockquote></div>
--001a11c1b4241bfd0d05122d2dd0--
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment