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:123)
        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$TripleMapper.&lt;init&gt;(QueryIterTriplePattern.java:67)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern.nextStage(QueryIterTriplePattern.java:41)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:91)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:52)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextBinding(QueryIterBlockTriples.java:53)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.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(QueryIteratorBase.java:66)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:28)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:28)
        at 
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.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;(ResultSetWrapper.java:39)
        at 
org.apache.clerezza.rdf.jena.sparql.JenaSparqlEngine.execute(JenaSparqlEngine.java:68)
        at 
org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcManager.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(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at 
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
        at 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
        at 
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
        at 
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
        at 
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
        at 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
        at 
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
        at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
        at 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
        at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
        at 
org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
        at 
org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(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(FilterHandler.java:78)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at 
org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at 
org.apache.stanbol.commons.httpqueryheaders.impl.QueryHeadersFilter.doFilter(QueryHeadersFilter.java:75)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
        at 
org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at 
org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilterHttp(ResourceServingFilter.java:148)
        at 
org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilter(ResourceServingFilter.java:91)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(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(AuthenticatingFilter.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.doFilter(AuthenticatingFilter.java:159)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
        at 
org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(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(Dispatcher.java:39)
        at 
org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.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:390)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.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.java:410)
        at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java: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.

Reply via email to