Dear Lorenz and Andy, Apologies for the belated reply. Many thanks to both of you for your help.
Lorenz, I'm afraid the data is valid because I have checked the validation of my jsonld data on https://jsonformatter.curiousconcept.com/ which checks whether the json data is valid or not. Besides, I have retrieved the data from the same jsonld file running SPARQL queries in Jena code. Andy, I liked both your advice and a simple code you suggested. I dropped the following line of code: TDBLoader.load(TDBInternal.getBaseDatasetGraphTDB(TDBFactory.createDatasetGraph(location)),in,false); and followed a simple code which worked. I really appreciate it. Best regards, Izhar ________________________________________ From: Andy Seaborne [[email protected]] Sent: 26 January 2017 08:39 To: [email protected] Subject: Re: Using TDB with Jena You do not need to use the loader; if you do the input must be N-Quads if you pass in an InputStream. At a guess, and we can't see the data, the app tried to read JSON-LD. Use RDFDataMgr.read. dataset.begin(ReadWrite.WRITE); try { RDFDataMgr.read(dataset, "/Users/izharullah/workspace/MyTDB/Soil1A.jsonld") ; dataset.commit(); } finally { dataset.end(); } Or Txn.executeWrite(dataset, ()-> RDFDataMgr.read(dataset, "/Users/izharullah/workspace/MyTDB/Soil1A.jsonld") ; ); Andy On 26/01/17 07:54, Lorenz B. wrote: > Hello Izhar, > > from the error messages I guess that the data is invalid: > > > [line: 2, col: 10] Expected BNode or IRI: Got: > [STRING2:56e1613a0dd8e408f1ca4d9d] > > > You can check line 2 or post here at least the beginning of the file > (~10 lines or something) that you load into TDB. > > > Lorenz > >> Hi, >> >> I just started learning Jena programming and have very little acquaintance >> with its APIs. I ran the following code using TDB and a SPARQL query just to >> test it but I got some errors after running the program. Here is the code: >> >> >> public class TDBexample2 { >> >> >> public static void main(String[] args) { >> >> FileManager fm = FileManager.get(); >> >> fm.addLocatorClassLoader(TDBexample2.class.getClassLoader()); >> >> InputStream in = >> fm.open("/Users/izharullah/workspace/MyTDB/Soil1A.jsonld"); >> >> >> Location location = Location.create >> ("/Users/izharullah/workspace/MyTDB"); >> >> >> // Load some initial data >> >> >> TDBLoader.load(TDBInternal.getBaseDatasetGraphTDB(TDBFactory.createDatasetGraph(location)), >> in, false); >> >> >> >> String queryString = >> >> >> >> "SELECT (COUNT(*) AS ?count) { " + >> >> " ?s ?p ?o . " + >> >> "}" ; >> >> >> >> >> >> Dataset dataset = TDBFactory.createDataset(location); >> >> dataset.begin(ReadWrite.READ); >> >> try { >> >> Query query = QueryFactory.create(queryString); >> >> QueryExecution qexec = QueryExecutionFactory.create(query, >> dataset); >> >> try { >> >> ResultSet results = qexec.execSelect(); >> >> while ( results.hasNext() ) { >> >> QuerySolution soln = results.nextSolution(); >> >> Literal count = soln.getLiteral("count"); >> >> System.out.println(count); >> >> } >> >> } finally { >> >> qexec.close(); >> >> } >> >> } finally { >> >> dataset.end(); >> >> } >> >> } >> >> >> } >> >> >> I got some unexpected errors, here is the snapshot: >> >> >> Exception in thread "main" org.apache.jena.riot.RiotException: [line: 2, >> col: 10] Expected BNode or IRI: Got: [STRING2:56e1613a0dd8e408f1ca4d9d] >> >> at >> org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:136) >> >> at org.apache.jena.riot.lang.LangEngine.raiseException(LangEngine.java:165) >> >> at org.apache.jena.riot.lang.LangEngine.exceptionDirect(LangEngine.java:158) >> >> at org.apache.jena.riot.lang.LangEngine.exception(LangEngine.java:151) >> >> at org.apache.jena.riot.lang.LangNTuple.checkIRIOrBNode(LangNTuple.java:90) >> >> at org.apache.jena.riot.lang.LangNQuads.parseOne(LangNQuads.java:86) >> >> at org.apache.jena.riot.lang.LangNQuads.runParser(LangNQuads.java:54) >> >> at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42) >> >> at >> org.apache.jena.riot.RDFParserRegistry$ReaderRIOTLang.read(RDFParserRegistry.java:178) >> >> at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:859) >> >> at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:698) >> >> at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:677) >> >> at >> org.apache.jena.tdb.store.bulkloader.BulkLoader.loadQuads$(BulkLoader.java:152) >> >> at >> org.apache.jena.tdb.store.bulkloader.BulkLoader.loadDataset(BulkLoader.java:115) >> >> at org.apache.jena.tdb.TDBLoader.loadDataset$(TDBLoader.java:265) >> >> at org.apache.jena.tdb.TDBLoader.loadDataset(TDBLoader.java:200) >> >> at org.apache.jena.tdb.TDBLoader.load(TDBLoader.java:85) >> >> at TDBexample2.main(TDBexample2.java:28) >> >> >> Can someone help me what is the problem with the code? >> >> Many thanks in advance. >> >> >> Best regards, >> >> >> Izhar >> >>
