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 :) . 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> >> > > -- 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
