Le 11/10/11 22:45, Paolo Castagna a écrit :
Hi Jérôme
Jérôme wrote:
Hi,
Has somebody already tested to make LARQ queries on a Fuseki server with
the last
larq version (0.2.2-incubating-SNAPSHOT, ARQ: 2.8.9-incubating-SNAPSHOT,
Fuseki: 0.2.1-SNAPSHOT)
I've just updated the patch available here to include LARQ in the Fuseki
distribution:
https://issues.apache.org/jira/browse/JENA-63
Here is what I do to checkout, patch and compile/package Fuseki:
cd /tmp
svn co https://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk/
fuseki
cd /tmp/fuseki
wget
https://issues.apache.org/jira/secure/attachment/12498659/JENA-63_Fuseki_r1176980.patch
patch -p0< JENA-63_Fuseki_r1176980.patch
mvn clean package
I load some data with TDB:
tdbloader --loc=/tmp/tdb books.ttl
I ensure /tmp/lucene does not exists:
rm -rf /tmp/lucene
I start Fuseki:
fuseki-server --config=config.ttl
Here is my config.ttl:
------
@prefix :<#> .
@prefix fuseki:<http://jena.apache.org/fuseki#> .
@prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:<http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:<http://jena.hpl.hp.com/2005/11/Assembler#> .
[] rdf:type fuseki:Server ;
fuseki:services (
<#service3>
) .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
<#service3> rdf:type fuseki:Service ;
fuseki:name "tdb" ; # http://host/tdb
fuseki:serviceQuery "query" ; # SPARQL query service
fuseki:dataset<#dataset> ;
.
<#dataset> rdf:type tdb:DatasetTDB ;
tdb:location "/tmp/tdb" ;
ja:textIndex "/tmp/lucene" ;
# Query timeout on this dataset (milliseconds)
ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ;
## tdb:unionDefaultGraph true ;
.
------
I then query with:
s-query --service=http://127.0.0.1:3030/tdb/query "PREFIX
pf:<http://jena.hpl.hp.com/ARQ/property#> SELECT ?lit { ?lit pf:textMatch '+harry'
}"
Here is the result:
------
{
"head": {
"vars": [ "lit" ]
} ,
"results": {
"bindings": [
{
"lit": { "type": "literal" , "value": "Harry Potter and the Philosopher's
Stone" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Chamber of
Secrets" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Prisoner Of
Azkaban" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Goblet of
Fire" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Order of the
Phoenix" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Deathly
Hallows" }
} ,
{
"lit": { "type": "literal" , "value": "Harry Potter and the Half-Blood
Prince" }
}
]
}
}
------
To help you solve your problem, here is the mvn dependency:tree I have:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Fuseki
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] org.openjena:fuseki:jar:0.2.1-SNAPSHOT
[INFO] +- org.apache.jena:jena-arq:jar:2.8.9-incubating-SNAPSHOT:compile
[INFO] | +- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile
[INFO] | | \- stax:stax-api:jar:1.0.1:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.1.2:compile
[INFO] | +- com.hp.hpl.jena:iri:jar:0.8:compile
[INFO] | +- com.ibm.icu:icu4j:jar:3.4.4:compile
[INFO] | \- xerces:xercesImpl:jar:2.7.1:compile
[INFO] +- org.apache.jena:jena-larq:jar:0.2.2-incubating-SNAPSHOT:compile
[INFO] | \- org.apache.lucene:lucene-core:jar:3.1.0:compile
[INFO] +- org.apache.jena:jena-arq:jar:tests:2.8.9-incubating-SNAPSHOT:test
[INFO] +- com.hp.hpl.jena:jena:jar:2.6.4:compile
[INFO] +- com.hp.hpl.jena:jena:jar:tests:2.6.4:test
[INFO] +- org.apache.jena:jena-tdb:jar:0.9.0-incubating-SNAPSHOT:compile
[INFO] +- junit:junit:jar:4.8.2:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.1.2:compile
[INFO] +- commons-fileupload:commons-fileupload:jar:1.2.2:compile
[INFO] +- commons-codec:commons-codec:jar:1.5:compile
[INFO] +- org.eclipse.jetty:jetty-server:jar:7.2.1.v20101111:compile
[INFO] | +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] | +- org.eclipse.jetty:jetty-continuation:jar:7.2.1.v20101111:compile
[INFO] | \- org.eclipse.jetty:jetty-http:jar:7.2.1.v20101111:compile
[INFO] | \- org.eclipse.jetty:jetty-io:jar:7.2.1.v20101111:compile
[INFO] +- org.eclipse.jetty:jetty-servlet:jar:7.2.1.v20101111:compile
[INFO] | \- org.eclipse.jetty:jetty-security:jar:7.2.1.v20101111:compile
[INFO] +- org.eclipse.jetty:jetty-jsp-2.1:jar:7.2.1.v20101111:compile
[INFO] +- org.mortbay.jetty:jsp-2.1-glassfish:jar:2.1.v20100127:compile
[INFO] | +- org.eclipse.jdt.core.compiler:ecj:jar:3.5.1:compile
[INFO] | +- org.mortbay.jetty:jsp-api-2.1-glassfish:jar:2.1.v20100127:compile
[INFO] | \- ant:ant:jar:1.6.5:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:7.2.1.v20101111:compile
[INFO] | \- org.eclipse.jetty:jetty-xml:jar:7.2.1.v20101111:compile
[INFO] | \- org.eclipse.jetty:jetty-util:jar:7.2.1.v20101111:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.1:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.6.1:compile
[INFO] \- log4j:log4j:jar:1.2.16:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Oct 11 21:43:18 BST 2011
[INFO] Final Memory: 23M/347M
[INFO] ------------------------------------------------------------------------
I really hope this help you to find what's wrong with your situation.
Paolo
Hi Paulo,
I've tried to re-install Fuseki from scratch according to your method,
step by step.
I get an "error" when the server starts;
fuseki-server --config=config.ttl
The trace:
11:23:42 INFO Config :: Service: :service3
11:23:42 INFO Config :: name = tdb
11:23:42 INFO Config :: query = /tdb/query
11:23:42 WARN AssemblerLARQ :: Exception building the index:
subject cannot be null
11:23:42 INFO Server :: Dataset path = /tdb
[...]
I've used your config.ttl
Any idea about the "WARN AssemblerLARQ :: Exception building
the index: subject cannot be null" ?
Thank you!
Jérôme
I get this error message (I thought I had solved...):
14:15:56 WARN Fuseki :: [1] RC = 500 :
com.hp.hpl.jena.sparql.engine.binding.BindingMap
14:15:56 INFO Fuseki :: [1] 500
com.hp.hpl.jena.sparql.engine.binding.BindingMap
May be i had not this message when queries returned no results....
Jérôme
Le 11/10/11 12:21, Paolo Castagna a écrit :
Jérôme wrote:
Le 11/10/11 11:36, Paolo Castagna a écrit :
Jérôme wrote:
Le 11/10/11 11:14, Paolo Castagna a écrit :
Jérôme wrote:
Le 11/10/11 10:08, Andy Seaborne a écrit :
Jérôme,
Sorry if you've said this before in previous emails but what's the
query and what's the data like? When did you last update LARQ?
Hi Andy,
I did my last LARQ update 2 days ago. The problem is not about
datas,
because the result is the same with the books.ttl file: 0 result
with a
very simple query like:
PREFIX pf:<http://jena.hpl.hp.com/ARQ/property#>
SELECT ?doc
{
?lit pf:textMatch 'Potter' .
?doc ?p ?lit
}
I'm trying to find out if something in the chain of packages has
changed and whether we've introduced a a regression in ARQ or LARQ.
The only ARQ change I can think of relates to named graphs but
you're
not using named graphs and the change to correctly handle property
functions would only go from 0 to some results.
You have the same data available via<#books> and
via<#dataset> --
does the query work one route and not the other or are both now
showing 0 results?
No, simple SPARQL queries works fine. I only have problem on the
lucene
indexed datas with LARQ queries.
The problem is that somehow your Lucene index is empty or non
existing.
If the /tmp/lucene directory exists and it's empty or it contains an
empty Lucene index when you start Fuseki. LARQ will *not* index your
data.
LARQ will index your data if and only if you point it at a non
existing
directory. When you start Fuseki, LARQ should create the /tmp/lucene
directory for you and index your data.
When I need to debug problems involving Lucene indexes I use:
http://www.getopt.org/luke/luke-0.9.9/lukemin-0.9.9.jar
... it's very useful to inspect a Lucene index. I suspect yours is
empty or non-existing.
You can also try to use larq.larqbuilder to build your Lucene index
manually at the beginning, but it would be much better if LARQ does
automatically this for you (as it should be). Try this:
1. make sure Fuseki or your app is not running
2. java -cp fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder \
--allow-duplicates --larq=/tmp/lucene \
--desc=/path/to/your/fuseki/config.ttl
(one line!)
3. check your Lucene index in the /tmp/lucene directory
4. start Fuseki as usual
The larqbuilder command-line failed:
java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder
--allow-duplicates --larq=/tmp/lucene --desc=config.ttl
com.hp.hpl.jena.sparql.ARQException: More than one: var ?root
at
com.hp.hpl.jena.sparql.util.QueryExecUtils.getOne(QueryExecUtils.java:354)
at
com.hp.hpl.jena.sparql.util.graph.GraphUtils.findRootByType(GraphUtils.java:191)
at
com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils.build(AssemblerUtils.java:97)
at arq.cmdline.ModAssembler.create(ModAssembler.java:67)
at
arq.cmdline.ModDatasetAssembler.createDataset(ModDatasetAssembler.java:43)
at arq.cmdline.ModDataset.getDataset(ModDataset.java:34)
at larq.larqbuilder.exec(larqbuilder.java:84)
at arq.cmdline.CmdMain.mainMethod(CmdMain.java:97)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:59)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:46)
at larq.larqbuilder.main(larqbuilder.java:50)
Ok, this is because larq.larqbuilder command does not support multiple
datasets
(as they have been introduced only recently in Fuseki's config format).
Could you try to remove this from your config.ttl:
<#books> rdf:type ja:RDFDataset ;
rdfs:label "Books" ;
ja:defaultGraph
[ rdfs:label "discours_de_la_methode.rdf" ;
a ja:MemoryModel ;
ja:content [ja:externalContent<file:Data/file.rdf> ] ;
] ;
.
And, make sure you have only one dataset (i.e.<#dataset> rdf:type
tdb:DatasetTDB)?
Try again:
1. make sure Fuseki or your app is not running
2. rm -rf /tmp/lucene
3. java -cp fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder \
--allow-duplicates --larq=/tmp/lucene \
--desc=/path/to/your/fuseki/config.ttl
(one line!)
4. check your Lucene index in the /tmp/lucene directory
5. start Fuseki as usual
I think it's really better: my /tmp/lucene contains files. One new
problem...(sorry...),
I'm not able to test it because before running all my application, i've
tried a mvn install of LARQ (to compile and install my own changes) - i
get a dependency error:
Failed to execute goal on project jena-larq: Could not resolve
dependencies for project
org.apache.jena:jena-larq:jar:0.2.2-incubating-SNAPSHOT: Could not find
artifact org.apache.jena:jena-tdb:jar:0.8.11-SNAPSHOT in
apache.snapshots (http://repository.apache.org/snapshots)
What are goupId and artefactId for TDB? Have they changed...?
Hi Jérôme,
you can browse any Maven repository, to check what are the SNAPSHOTs
available:
https://repository.apache.org/content/groups/snapshots/org/apache/jena/jena-tdb/
If you do that, you'll see that the version you need to use now is:
0.9.0-incubating-SNAPSHOT
In general, the first thing I do when Maven fail to retrieve a
dependency is
to double check manually with a browser if the artifact is actually
there.
Most of the time, the problem is because I have an error or a typo in
my pom.xml
file. Check groupId, check artifactId, check version. This is what I do.
Hopefully, we are getting there!
Paolo
larq.larqbuilder source code is here:
https://svn.apache.org/repos/asf/incubator/jena/Jena2/LARQ/trunk/src/main/java/larq/larqbuilder.java
Once again, ideas on how to improve it (and patches) are welcome!
Paolo
The /tmp/lucene dir is created, with the empty write.lock file.
Does this work for you?
Paolo
Jérôme
Andy
On 10/10/11 17:01, Paolo Castagna wrote:
Hi Jérôme,
first of all, thanks for helping out testing the LARQ
0.2.2-incubating-SNAPSHOT
and for your patience. ;-)
This hopefully will help to spot problems early one and reduce
problems once ARQ
and LARQ are released within Apache.
Jérôme wrote:
Hi,
i've recently made an svn up on my LARQ directory.
Now, my LARQ queries return 0 solution (they returned before).
I'm using:
- fuseki 0.2.1-SNAPSHOT
-arq 2.8.9-SNAPSHOT
-larq 0.2.2-incubating-SNAPSHOT
According to the LARQ's pom.xml file [1], LARQ
0.2.2-incubating-SNAPSHOT now
depends on the new ARQ SNAPSHOTs.
Precisely, it depends on
org.apache.jena:jena-arq:2.8.9-incubating-SNAPSHOT
Please note the new groupId and artifactId for ARQ.
New ARQ SNAPSHOTs are available here [2].
[1]
https://svn.apache.org/repos/asf/incubator/jena/Jena2/LARQ/trunk/pom.xml
[2]
https://repository.apache.org/content/repositories/snapshots/org/apache/jena/jena-arq/2.8.9-incubating-SNAPSHOT/
-lucene 3.1.0
My config.ttl file has not changed:
[...]
<#books> rdf:type ja:RDFDataset ;
rdfs:label "Books" ;
ja:defaultGraph
[ rdfs:label "discours_de_la_methode.rdf" ;
a ja:MemoryModel ;
ja:content [ja:externalContent<file:Data/file.rdf>
] ;
] ;
.
<#dataset> rdf:type tdb:DatasetTDB ;
tdb:location "/tmp/tdb" ;
ja:textIndex "/tmp/lucene" ;
# Query timeout on this dataset (milliseconds)
ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue
"1000" ] ;
## tdb:unionDefaultGraph true ;
Before running the fuseki server, i build my triple store with
the
command-line:
java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar tdb.tdbloader
--loc=/tmp/tdb Data/file.rdf
Can you please try:
- stop Fuseki
- delete /tmp/lucence
- restart Fuseki
LARQ will now behave like this:
- if the directory exists with a Lucene index, it will
leave it
untouched
- if the directory does not exists it will create it and
index your
data
What do you have in your /tmp/lucene directory?
So, i've no error - juste 0 result...
Any ideas?
Thank you.
Let us know how it goes,
Paolo