Hi Sarven,
I think I have identified the problem.
With Lucene we can have only one IndexWriter at the time.
When we run larq.larqbuilder and we specify --desc=tdb.ttl
we need to make sure tdb.ttl does not have a ja:textIndex
property in it.
This is because larqbuilder creates one Lucene IndexWriter
and then it calls the DataSourceAssembler which is trying
to create another Lucene IndexWriter if ja:textIndex is
there.
Also, from the fact that you still have "null" in your
error message... I am not 100% sure you are using the
latest ARQ SNAPSHOT. To be absolutely sure, could you
try deleting it from your .m2 Maven repository.
However, I am experiencing another problem with Fuseki
which I do not understand:
cd /tmp
svn co http://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk/ fuseki
cd /tmp/fuseki
mvn test
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.openjena.fuseki.TS_Fuseki
INFO [qtp1548452562-20] (SPARQL_ServletBase.java:118) - [1] POST
http://localhost:3535/dataset/update
INFO [qtp1548452562-20] (SPARQL_ServletBase.java:153) - [1] 204 No Content
INFO [qtp1548452562-21] (SPARQL_ServletBase.java:118) - [2] GET
http://localhost:3535/dataset/data?default=
INFO [qtp1548452562-21] (SPARQL_ServletBase.java:153) - [2] 200 OK
INFO [qtp1548452562-22] (SPARQL_ServletBase.java:118) - [3] GET
http://localhost:3535/dataset/data?graph=http://graph/1
INFO [qtp1548452562-22] (SPARQL_ServletBase.java:155) - [3] 404 No such graph:
<http://graph/1>
INFO [qtp1548452562-23] (SPARQL_ServletBase.java:118) - [4] POST
http://localhost:3535/dataset/update
INFO [qtp1548452562-23] (SPARQL_ServletBase.java:153) - [4] 204 No Content
INFO [qtp1548452562-24] (SPARQL_ServletBase.java:118) - [5] GET
http://localhost:3535/dataset/data?graph=http://graph/1
INFO [qtp1548452562-24] (SPARQL_ServletBase.java:155) - [5] 404 No such graph:
<http://graph/1>
INFO [qtp1548452562-19] (SPARQL_ServletBase.java:118) - [6] POST
http://localhost:3535/dataset/update
INFO [qtp1548452562-19] (SPARQL_ServletBase.java:153) - [6] 204 No Content
It stops here, forever.
To retry the patch for LARQ in Fuseki, do:
cd /tmp
svn co http://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk/ fuseki
cd /tmp/fuseki
wget
https://issues.apache.org/jira/secure/attachment/12482758/JENA-63_Fuseki_r1136050.patch
patch -p0 < JENA-63_Fuseki_r1136050.patch
mvn -DskipTests=true package
Then you should be able to index a dataset using:
java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder
--allow-duplicates --larq=/tmp/lucene --desc=/path/to/your/assembler.ttl
But, please, make sure you do not have any ja:textIndex in your assembler.ttl
when you do the initial bulk indexing.
You should put the ja:textIndex back in for normal operations.
It's not ideal, but at least now I understand the cause of the problem
and there is a workaround.
Let me know how it goes.
Paolo
Sarven Capadisli wrote:
Thanks a lot Paulo. Just some feedback on these steps:
My pom.xml contains http://pastebin.com/5HAJBL95
$ java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder
--allow-duplicates --larq=/usr/lib/fuseki/lucene-index/
--desc=/usr/lib/fuseki/tdb2.ttl
11:56:34 WARN DataSourceAssembler :: Unable to initialize LARQ using
org.apache.jena.larq.assembler.AssemblerLARQ: null
11:56:34 WARN DataSourceAssembler :: Unable to initialize LARQ using
com.hp.hpl.jena.query.larq.AssemblerLARQ: null
-Sarven
On Thu, 2011-06-16 at 10:45 +0100, Paolo Castagna wrote:
Hi Sarven,
first of all, thanks for your email.
This is about an open issue (an improvement) which aim is to add the new LARQ
(i.e. the one as separate module) to Fuseki and make it as easy as possible for
people to use.
See: https://issues.apache.org/jira/browse/JENA-63
The issue is still open and there are problems.
I cleaned up the attachments on JENA-63 and uploaded a new patch for Fuseki.
This is how you can apply the patch to Fuseki:
cd /tmp
svn co http://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk/ fuseki
cd /tmp/fuseki
wget
https://issues.apache.org/jira/secure/attachment/12482758/JENA-63_Fuseki_r1136050.patch
patch -p0 < JENA-63_Fuseki_r1136050.patch
mvn package
Then you should be able to index a dataset using:
java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder
--allow-duplicates --larq=/tmp/lucene --desc=/path/to/your/assembler.ttl
However, there is a problem (I improved the error message):
10:32:35 WARN DataSourceAssembler :: Unable to initialize LARQ using
org.apache.jena.larq.assembler.AssemblerLARQ: Lock obtain timed out:
NativeFSLock@/tmp/lucene/write.lock
This is the stack trace:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.hp.hpl.jena.sparql.core.assembler.DataSourceAssembler.createTextIndex(DataSourceAssembler.java:115)
at
com.hp.hpl.jena.sparql.core.assembler.DataSourceAssembler.createTextIndex(DataSourceAssembler.java:97)
at
com.hp.hpl.jena.sparql.core.assembler.DatasetAssembler.open(DatasetAssembler.java:22)
at
com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:118)
at
com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:105)
at
com.hp.hpl.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:69)
at
com.hp.hpl.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:37)
at
com.hp.hpl.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:34)
at
com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils.build(AssemblerUtils.java:88)
at arq.cmdline.ModAssembler.create(ModAssembler.java:55)
at
arq.cmdline.ModDatasetAssembler.createDataset(ModDatasetAssembler.java:31)
at arq.cmdline.ModDataset.getDataset(ModDataset.java:22)
at larq.larqbuilder.exec(larqbuilder.java:84)
at arq.cmdline.CmdMain.mainMethod(CmdMain.java:85)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:47)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:34)
at larq.larqbuilder.main(larqbuilder.java:50)
Caused by: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed
out: NativeFSLock@/tmp/lucene/write.lock
at org.apache.lucene.store.Lock.obtain(Lock.java:84)
at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1097)
at
org.apache.jena.larq.IndexWriterFactory.create(IndexWriterFactory.java:36)
at
org.apache.jena.larq.assembler.AssemblerLARQ.make(AssemblerLARQ.java:85)
... 21 more
It seems to me that Lucene is failing to acquire the write.lock,
as if initialization code were called twice.
I have not yet identified the cause of this and I am investigating.
Apologies and be patience (until we make progress and we close JENA-63).
Paolo
Sarven Capadisli wrote:
Hi,
I'd like to get Fuseki and LARQ running. Below is where I'm at. Any help
would be great:
I use https://svn.apache.org/repos/asf/incubator/jena/Jena2/Fuseki/trunk
and it sits at /usr/lib/fuseki
I have
http://ftp.heanet.ie/mirrors/www.apache.org/dist//lucene/java/3.2.0/lucene-3.2.0.tgz
at /usr/lib/lucene/
I've applied
https://issues.apache.org/jira/secure/attachment/12478735/JENA-63_Fuseki_r8810.patch
My /usr/lib/fuseki/pom.xml is http://pastebin.com/Cpaz75ai
My /usr/lib/fuseki/tdb2.ttl is http://pastebin.com/SXv5LWEn
When I run
$java -cp target/fuseki-0.2.1-SNAPSHOT-sys.jar larq.larqbuilder
--allow-duplicates --larq=/usr/lib/lucene/index/
--desc=/usr/lib/fuseki/tdb2.ttl
I get http://pastebin.com/JQPqsPtH
-Sarven