clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Isley, Steven" <sis...@prgs.edu>
Subject RE: Stanbol SPARQL and RelFinder
Date Mon, 03 Jun 2013 16:25:34 GMT
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
View raw message