On 20/02/15 15:15, Jean-Marc Vanel wrote:
Thanks,
and indeed it was loading and empty database.
One conclusion is that for small files that may be wrong, it 's safer to
load with SPARQL Update and
LOAD <remoteURI> [ INTO <uri> ]
and for that it would be convenient if
tdb.tdbupdate --update=FILE
would also accept a string :)
Yes - how about sending a patch?
Andy
2015-02-20 15:51 GMT+01:00 Andy Seaborne <[email protected]>:
On 20/02/15 11:40, Jean-Marc Vanel wrote:
When rebuilding my TDB from scratch,
I found a way to reproduce the problem.
1. load a bad syntax file ( attached )
2. load any good file in same named graph
Hope it helps.
Was it loading and empty database?
It's because of the syntax error. It breaks the load.
The bulk loader into an empty database does not load triples as they come
in. It does the minimum work then goes back and builds indexes. If it
breaks during loading, the database is not built properly. It is trading
speed for reliability.
It is a good idea to parse a file before loading it to check for errors.
It is much easier to correct an error before loading into a database than
fixing it in a database. "riot --validate" does more checks than tdbloader
does., e.g. literal lexical forms.
Andy
2015-02-20 12:24 GMT+01:00 Jean-Marc Vanel <[email protected]
<mailto:[email protected]>>:
Hi
It seems that the database , or some graph in it , is corrupted.
That's with :
"org.apache.jena" % "apache-jena-libs" % "2.12.1"
On another TDB directory instance , the same file is loaded fine.
The relevant code seems to be:
public synchronized String readPrefix(String graphName, String
prefix) {
Node g = NodeFactory.createURI(graphName) ;
Node p = NodeFactory.createLiteral(prefix) ;
Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, p, null)
;
try {
if ( ! iter.hasNext() )
return null ;
Tuple<Node> t = iter.next() ;
Node uri = t.get(2) ;
* return uri.getURI() ; // uri is probably null !*
} finally { Iter.close(iter) ; }
}
A user can hope that a better error message is displayed :) .
java -cp $JARS tdb.tdbloader --verbose --loc=TDB
--graph=av-cobus-onto $ONTOS/barter_user.owl.n3
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/home/jmv/deploy/semantic_forms_play-1.0-
SNAPSHOT/lib/ch.qos.logback.logback-classic-1.1.1.jar!/org/slf4j/impl/
StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/home/jmv/deploy/semantic_forms_play-1.0-
SNAPSHOT/lib/org.slf4j.slf4j-log4j12-1.7.6.jar!/org/slf4j/
impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.
SLF4J: Actual binding is of type
[ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Java maximum memory: 259522560
symbol:http://jena.hpl.hp.com/ARQ#constantBNodeLabels = true
symbol:http://jena.hpl.hp.com/ARQ#regexImpl =
symbol:http://jena.hpl.hp.com/ARQ#javaRegex
symbol:http://jena.hpl.hp.com/ARQ#stageGenerator =
com.hp.hpl.jena.tdb.solver.StageGeneratorDirectTDB@1049a04
symbol:http://jena.hpl.hp.com/ARQ#strictSPARQL = false
symbol:http://jena.hpl.hp.com/ARQ#enablePropertyFunctions = true
Exception in thread "main" java.lang.NullPointerException
*at
com.hp.hpl.jena.tdb.store.DatasetPrefixesTDB.readPrefix(
DatasetPrefixesTDB.java:88)*
at
com.hp.hpl.jena.sparql.graph.GraphPrefixesProjection.get(
GraphPrefixesProjection.java:96)
at
com.hp.hpl.jena.sparql.graph.GraphPrefixesProjection.set(
GraphPrefixesProjection.java:74)
at
com.hp.hpl.jena.shared.impl.PrefixMappingImpl.setNsPrefix(
PrefixMappingImpl.java:70)
at
com.hp.hpl.jena.tdb.store.bulkloader.BulkLoader$
DestinationGraph.prefix(BulkLoader.java:361)
at
org.apache.jena.riot.lang.LangTurtleBase.emitPrefix(
LangTurtleBase.java:492)
at
org.apache.jena.riot.lang.LangTurtleBase.directivePrefix(
LangTurtleBase.java:164)
at
org.apache.jena.riot.lang.LangTurtleBase.directive(
LangTurtleBase.java:140)
at
org.apache.jena.riot.lang.LangTurtleBase.runParser(
LangTurtleBase.java:79)
at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
at
org.apache.jena.riot.RDFParserRegistry$ReaderRIOTLang.read(
RDFParserRegistry.java:182)
at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:906)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:687)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:666)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:654)
at
com.hp.hpl.jena.tdb.store.bulkloader.BulkLoader.
loadTriples$(BulkLoader.java:129)
at
com.hp.hpl.jena.tdb.store.bulkloader.BulkLoader.
loadNamedGraph(BulkLoader.java:102)
at com.hp.hpl.jena.tdb.TDBLoader.loadNamedGraph$(TDBLoader.java:253)
at com.hp.hpl.jena.tdb.TDBLoader.loadGraph$(TDBLoader.java:232)
at com.hp.hpl.jena.tdb.TDBLoader.loadGraph(TDBLoader.java:174)
at com.hp.hpl.jena.tdb.TDBLoader.load(TDBLoader.java:111)
at tdb.tdbloader.loadNamedGraph(tdbloader.java:113)
at tdb.tdbloader.exec(tdbloader.java:102)
at arq.cmdline.CmdMain.mainMethod(CmdMain.java:102)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:63)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:50)
at tdb.tdbloader.main(tdbloader.java:44)
--
Jean-Marc Vanel
Déductions SARL - Consulting, services, training,
Rule-based programming, Semantic Web
http://deductions-software.com/
+33 (0)6 89 16 29 52 <tel:%2B33%20%280%296%2089%2016%2029%2052>
Twitter: @jmvanel , @jmvanel_fr ; chat:
irc://irc.freenode.net#eulergui <http://irc.freenode.net#eulergui>
--
Jean-Marc Vanel
Déductions SARL - Consulting, services, training,
Rule-based programming, Semantic Web
http://deductions-software.com/
+33 (0)6 89 16 29 52
Twitter: @jmvanel , @jmvanel_fr ; chat: irc://irc.freenode.net#eulergui
<http://irc.freenode.net#eulergui>