clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reto Bachmann-Gmür <r...@apache.org>
Subject Re: Stanbol SPARQL and RelFinder
Date Tue, 04 Jun 2013 09:52:39 GMT
Glad you found the video useful.

Let me know if things work when using the snapshot clerezza bundles.

Reto


On Mon, Jun 3, 2013 at 6:25 PM, Isley, Steven <sisley@prgs.edu> wrote:

> Thanks Reto!
>
> I will check that this fixed the problem in a day or two, then send out a
> few more details on how to integrate RelFinder for anybody else that is
> interested.
>
> Also, thanks for the video you put together for using Stanbol with
> Netbeans. I'm trying to use Eclipse, and the video has gotten me most of
> the way there!
>
> -steve
>
> [1] http://vimeo.com/61415903
>
> -----Original Message-----
> From: me@farewellutopia.com [mailto:me@farewellutopia.com] On Behalf Of
> Reto Bachmann-Gmür
> Sent: Monday, June 03, 2013 8:49 AM
> To: dev@stanbol.apache.org
> Cc: clerezza-dev@incubator.apache.org
> Subject: Re: Stanbol SPARQL and RelFinder
>
> I resolved CLEREZZA-787. I hope this resolves the problem.
>
> Cheers,
> Reto
>
>
> On Mon, Jun 3, 2013 at 5:39 PM, Reto Bachmann-Gmür <reto@wymiwyg.com>
> wrote:
>
> > Hi rupert, Isley,
> >
> > Yes the excpetion ios thrown in the implementation of ExtendedIterator
> > com.hp.hpl.jena.graph.impl.GraphBase#graphBaseFind(TripleMatch m) when
> > the subject in m is a literal. I think it would be safe to return an
> > empty iterator if this case.
> >
> > Cheers,
> > Reto
> >
> >
> > On Mon, Jun 3, 2013 at 9:45 AM, Rupert Westenthaler <
> > rupert.westenthaler@gmail.com> wrote:
> >
> >> Hi Isley, Clerezza community
> >>
> >> this seams to be related to an issue in the Clerezza SPARQL
> >> implementation. I think the problem is that the "Jena <-> Clerezza"
> >> Adapter enforces that subjects of triples need to be NonLiterals, but
> >> the last statement of your Sparql Query. An assumption that MUST NOT
> >> be true for SPARQL query results where resources in any position
> >> (subject, predicate, object) can have any type (Literal, URI or
> >> bNode).
> >>
> >> This query
> >>
> >> > SELECT * WHERE {
> >> > <Target Person 1 URI> ?pf1 ?middle .
> >> > <Target Person 2 URI> ?ps1 ?os1 .
> >> > ?os1 ?ps2 ?middle .
> >> > } LIMIT 10
> >>
> >> does exactly that, as it uses values ( 'os1') of '<Target Person 2
> >> URI> ?ps1 ?os1' as first argument (subject) for an second join '?os1
> >> ?ps2 ?middle'.
> >>
> >> Would be nice if someone with more knowledge about the Clerezza
> >> SPARQL implementation could look into that.
> >>
> >> best
> >> Rupert
> >>
> >>
> >>
> >> On Fri, May 31, 2013 at 7:17 PM, Isley, Steven <sisley@prgs.edu> wrote:
> >> > Hello everyone,
> >> >
> >> > I've been trying to integrate Apache Stanbol and Relfinder[1] (my
> >> > two
> >> favorite demos to show people who have never heard of the semantic
> >> web). I ran into some problems with Relfinder that I think I fixed.
> >> It was using a different parameter name to specify the graph to use in
> the SPARQL query.
> >> After recompiling Relfinder to work with Stanbol, I've run into some
> >> other errors which may be Stanbol related.
> >> >
> >> > Relfinder tries to find paths through a dataset that link two nodes.
> >> I've uploaded an rdf data set to a clerezza managed site. The data
> >> consists of documents, their authors, and then some other information
> >> (such as an author's department, or a document's publish date). I've
> >> got about 500k triples.
> >> >
> >> > My version of Relfinder will find some links between nodes. Like if
> >> > the
> >> two input nodes are people, it will find documents they both
> >> authored, or departments they both belong to. However, the more
> >> impressive searches result in an "Error 500 cannot convert {one of my
> >> URIs} to NonLiteral" (see end of email for full error message). Using
> >> firebug to monitor the network requests shows that this error occurs
> >> for all the searches that are supposed to return the more complicated
> >> results (Target Person 1 authored document X, also authored by person
> >> B, that authored document Y, that was also authored by Target Person
> >> 2)
> >> >
> >> > I spent some time playing with Stanbol's SPARQL endpoint, and the
> >> simplest example that reproduces the error is:
> >> >
> >> > SELECT * WHERE {
> >> > <Target Person 1 URI> ?pf1 ?middle .
> >> > <Target Person 2 URI> ?ps1 ?os1 .
> >> > ?os1 ?ps2 ?middle .
> >> > } LIMIT 10
> >> >
> >> > However, the following query works fine:
> >> > SELECT * WHERE {
> >> > <Target Person 1 URI> ?pf1 ?middle .
> >> > <Target Person 2 URI> ?ps1 ?os1 .
> >> > } LIMIT 10
> >> >
> >> > Note that these are simplified searches, the actual Relfinder
> >> > queries
> >> are more complicated, and attempt to filter out literal values. See
> >> the very, very end of this email for the original query. Relfinder
> >> works fine on other SPARQL endpoints, like dbpedia's.
> >> >
> >> > Thanks for any insights you can offer on this problem. The help is
> >> > much
> >> appreciated.
> >> >
> >> >
> >> > --
> >> > Steven Isley
> >> > Ph.D. Candidate
> >> > Pardee RAND Graduate School
> >> > RAND Corporation
> >> > ph: (310)393-0411 x6643
> >> >
> >> > -Steve Isley
> >> >
> >> >  [1] http://www.visualdataweb.org/relfinder.php
> >> >
> >> >
> >> > p.s. - if anyone else is trying to use RelFinder, I also ran into
> >> issues with CPU usage. Sometimes Stanbol would overrun the cpu limit
> >> on my server and would be silently killed. Took me a while to figure
> >> that one out! I managed to get around this using "unlimit cpu" - but
> >> the IT folks at my workplace will probably come down on me for that
> >> :)
> >> >
> >> > Error Output:
> >> > <html>
> >> > <head>
> >> > <meta http-equiv="Content-Type" content="text/html;
> >> charset=ISO-8859-1"/>
> >> > <title>Error 500 cannot convert "{the rdfs:label for Person 1}" to
> >> NonLiteral</title>
> >> > </head>
> >> > <body><h2>HTTP ERROR 500</h2>
> >> > <p>Problem accessing /sparql. Reason:
> >> > <pre>    cannot convert "{the rdfs:label for Person 1}" to
> >> NonLiteral</pre></p><h3>Caused by:</h3><pre>java.lang.RuntimeException:
> >> cannot convert "{the rdfs:label for Person 1}"to NonLiteral
> >> >         at
> >> org.apache.clerezza.rdf.jena.commons.Jena2TriaUtil.convertNonLiteral(
> >> Jena2TriaUtil.java:127)
> >> >         at
> >> org.apache.clerezza.rdf.jena.facade.JenaGraph.filter(JenaGraph.java:1
> >> 23)
> >> >         at
> >> org.apache.clerezza.rdf.jena.facade.JenaGraph.graphBaseFind(JenaGraph
> >> .java:151)
> >> >         at
> com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:240)
> >> >         at
> >> com.hp.hpl.jena.graph.impl.GraphBase.graphBaseFind(GraphBase.java:260
> >> )
> >> >         at
> com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:257)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern$TripleM
> >> apper.&lt;init&gt;(QueryIterTriplePattern.java:67)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern.nextSta
> >> ge(QueryIterTriplePattern.java:41)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextS
> >> tage(QueryIterRepeatApply.java:91)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBi
> >> nding(QueryIterRepeatApply.java:52)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer
> >> yIteratorBase.java:66)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextB
> >> inding(QueryIterBlockTriples.java:53)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer
> >> yIteratorBase.java:66)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIterSlice.hasNextBinding(
> >> QueryIterSlice.java:64)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer
> >> yIteratorBase.java:66)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBi
> >> nding(QueryIteratorWrapper.java:28)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer
> >> yIteratorBase.java:66)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBi
> >> nding(QueryIteratorWrapper.java:28)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(Quer
> >> yIteratorBase.java:66)
> >> >         at
> >> com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream
> >> .java:57)
> >> >         at
> >> org.apache.clerezza.rdf.jena.sparql.ResultSetWrapper.&lt;init&gt;(Res
> >> ultSetWrapper.java:39)
> >> >         at
> >> org.apache.clerezza.rdf.jena.sparql.JenaSparqlEngine.execute(JenaSpar
> >> qlEngine.java:68)
> >> >         at
> >> org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcMa
> >> nager.java:272)
> >> >         at
> >> org.apache.stanbol.commons.web.sparql.resource.SparqlEndpointResource
> >> .sparql(SparqlEndpointResource.java:162)
> >> >         at
> >> org.apache.stanbol.commons.web.sparql.resource.SparqlEndpointResource
> >> .postSparql(SparqlEndpointResource.java:182)
> >> >         at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown
> Source)
> >> >         at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> >> sorImpl.java:43)
> >> >         at java.lang.reflect.Method.invoke(Method.java:616)
> >> >         at
> >> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMe
> >> thodInvokerFactory.java:60)
> >> >         at
> >> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMeth
> >> odDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMetho
> >> dDispatchProvider.java:205)
> >> >         at
> >> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDi
> >> spatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
> >> >         at
> >> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethod
> >> Rule.java:302)
> >> >         at
> >> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(Resourc
> >> eClassRule.java:108)
> >> >         at
> >> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHa
> >> ndPathRule.java:147)
> >> >         at
> >> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(R
> >> ootResourceClassesRule.java:84)
> >> >         at
> >> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequ
> >> est(WebApplicationImpl.java:1480)
> >> >         at
> >> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequ
> >> est(WebApplicationImpl.java:1411)
> >> >         at
> >> com.sun.jersey.server.impl.application.WebApplicationImpl.handleReque
> >> st(WebApplicationImpl.java:1360)
> >> >         at
> >> com.sun.jersey.server.impl.application.WebApplicationImpl.handleReque
> >> st(WebApplicationImpl.java:1350)
> >> >         at
> >> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponen
> >> t.java:416)
> >> >         at
> >> com.sun.jersey.spi.container.servlet.ServletContainer.service(Servlet
> >> Container.java:538)
> >> >         at
> >> com.sun.jersey.spi.container.servlet.ServletContainer.service(Servlet
> >> Container.java:716)
> >> >         at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(S
> >> ervletHandler.java:96)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.ServletHandler.handle(Ser
> >> vletHandler.java:79)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(S
> >> ervletPipeline.java:42)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.do
> >> Filter(InvocationFilterChain.java:49)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter
> >> (HttpFilterChain.java:33)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.handle(Filt
> >> erHandler.java:78)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.do
> >> Filter(InvocationFilterChain.java:47)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter
> >> (HttpFilterChain.java:33)
> >> >         at
> >> org.apache.stanbol.commons.httpqueryheaders.impl.QueryHeadersFilter.d
> >> oFilter(QueryHeadersFilter.java:75)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(Fi
> >> lterHandler.java:88)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.handle(Filt
> >> erHandler.java:76)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.do
> >> Filter(InvocationFilterChain.java:47)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter
> >> (HttpFilterChain.java:33)
> >> >         at
> >> org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilt
> >> erHttp(ResourceServingFilter.java:148)
> >> >         at
> >> org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilt
> >> er(ResourceServingFilter.java:91)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(Fi
> >> lterHandler.java:88)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.handle(Filt
> >> erHandler.java:76)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.do
> >> Filter(InvocationFilterChain.java:47)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter
> >> (HttpFilterChain.java:33)
> >> >         at
> >> org.apache.stanbol.commons.security.auth.AuthenticatingFilter$1.run(A
> >> uthenticatingFilter.java:163)
> >> >         at java.security.AccessController.doPrivileged(Native Method)
> >> >         at
> javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
> >> >         at
> >> org.apache.stanbol.commons.security.auth.AuthenticatingFilter.doFilte
> >> r(AuthenticatingFilter.java:159)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(Fi
> >> lterHandler.java:88)
> >> >         at
> >> org.apache.felix.http.base.internal.handler.FilterHandler.handle(Filt
> >> erHandler.java:76)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.do
> >> Filter(InvocationFilterChain.java:47)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter
> >> (HttpFilterChain.java:33)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(
> >> FilterPipeline.java:48)
> >> >         at
> >> org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Disp
> >> atcher.java:39)
> >> >         at
> >> org.apache.felix.http.base.internal.DispatcherServlet.service(Dispatc
> >> herServlet.java:67)
> >> >         at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >> >         at
> >> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511
> >> )
> >> >         at
> >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
> >> 90)
> >> >         at
> >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
> >> 82)
> >> >         at
> >> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
> >> 65)
> >> >         at
> >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
> >> 52)
> >> >         at org.mortbay.jetty.Server.handle(Server.java:326)
> >> >         at
> >> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:54
> >> 2)
> >> >         at
> >> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio
> >> n.java:943)
> >> >         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
> >> >         at
> >> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
> >> >         at
> >> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> >> >         at
> >> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
> >> va:410)
> >> >         at
> >> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
> >> ava:582)
> >> > </pre>
> >> > <hr /><i><small>Powered by Jetty://</small></i><br/>
<br/> <br/>
> >> > <br/> <br/> <br/> <br/> <br/> <br/>
<br/> <br/> <br/> <br/> <br/>
> >> > <br/> <br/> <br/> <br/> <br/> <br/>
> >> >
> >> > </body>
> >> > </html>
> >> >
> >> >
> >> > RelFinder Query:
> >> >
> >> > SELECT * WHERE {
> >> > <http://dopma-ropma.rand.org/people/{Target Person 1}> ?pf1 ?middle
.
> >> > <http://dopma-ropma.rand.org/people/{Target Person 2}> ?ps1 ?os1
.
> >> > ?os1 ?ps2 ?middle .
> >> > FILTER (
> >> >    (?pf1 != <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ) &&
> >> > (?pf1 != <http://www.w3.org/2004/02/skos/core#subject> ) &&
(?pf1
> >> > != <http://www.w3.org/2002/07/owl#sameAs> ) && (?pf1 !=
> >> > <http://purl.org/dc/terms/subject> ) && (?pf1 !=
> >> > <http://purl.org/dc/terms/dateCopyrighted> ) && (?pf1 !=
> >> > <http://purl.org/dc/terms/title> ) && (?pf1 !=
> >> > <http://dopma-ropma.rand.org/people/employeeID2> ) && (?pf1
!=
> >> > <http://xmlns.com/foaf/0.1/mbox> ) && (?ps1 !=
> >> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ) && (?ps1
!=
> >> > <http://www.w3.org/2004/02/skos/core#subject> ) && (?ps1
!=
> >> > <http://www.w3.org/2002/07/owl#sameAs> ) && (?ps1 !=
> >> > <http://purl.org/dc/terms/subject> ) && (?ps1 !=
> >> > <http://purl.org/dc/terms/dateCopyrighted> ) && (?ps1 !=
> >> > <http://purl.org/dc/terms/title> ) && (?ps1 !=
> >> > <http://dopma-ropma.rand.org/people/employeeID2> ) && (?ps1
!=
> >> > <http://xmlns.com/foaf/0.1/mbox> ) && (?ps2 !=
> >> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ) && (?ps2
!=
> >> > <http://www.w3.org/2004/02/skos/core#subject> ) && (?ps2
!=
> >> > <http://www.w3.org/2002/07/owl#sameAs> ) && (?ps2 !=
> >> > <http://purl.org/dc/terms/subject> ) && (?ps2 !=
> >> > <http://purl.org/dc/terms/dateCopyrighted> ) && (?ps2 !=
> >> > <http://purl.org/dc/terms/title> ) && (?ps2 !=
> >> > <http://dopma-ropma.rand.org/people/employeeID2> ) && (?ps2
!=
> >> > <http://xmlns.com/foaf/0.1/mbox> ) && (!isLiteral(?middle))
&&
> >> > (?middle != <http://dopma-ropma.rand.org/people/{Target Person 1}>
> >> > ) && (?middle != <http://dopma-ropma.rand.org/people/{Target
Person
> >> > 2}> ) && (?middle != ?os1 ) && (!isLiteral(?os1)) &&
(?os1 !=
> >> > <http://dopma-ropma.rand.org/people/{Target Person 1}> ) &&
(?os1
> >> > != <http://dopma-ropma.rand.org/people/{Target Person 2}> ) &&
> >> > (?os1 != ?middle ) ).
> >> > } LIMIT 10
> >> >
> >> >
> >> _____________________________________________________________________
> >> _____
> >> >
> >> > This email message is for the sole use of the intended recipient(s)
> >> > and may contain confidential information. Any unauthorized review,
> >> > use, disclosure or distribution is prohibited. If you are not the
> >> > intended recipient, please contact the sender by reply email and
> >> > destroy all
> >> copies
> >> > of the original message.
> >> >
> >>
> >>
> >>
> >> --
> >> | Rupert Westenthaler             rupert.westenthaler@gmail.com
> >> | Bodenlehenstraße 11                             ++43-699-11108907
> >> | A-5500 Bischofshofen
> >>
> >
> >
>
> __________________________________________________________________________
>
> This email message is for the sole use of the intended recipient(s) and
> may contain confidential information. Any unauthorized review, use,
> disclosure or distribution is prohibited. If you are not the intended
> recipient, please contact the sender by reply email and destroy all copies
> of the original message.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message