You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Diptendu Dutta <du...@gmail.com> on 2020/03/03 14:01:42 UTC

Exception in writing RDF from model

I am getting java.lang.StringIndexOutOfBoundsException while writing
RDF from a model (model.write()). I have tried with other mechanisms
such as RDFWriter, RDFDataMgr but I get exactly the same error.
Here is the code:

static public String getRDF(String corpus_file_id) {

String rdfString = null;

Model model = null;

dataset.begin(ReadWrite.READ) ;

try {
model = dataset.getNamedModel(corpus_file_id);
model.write(System.out, "RDF/XML");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
model.close();
       dataset.end();
}
return rdfString;
}

java.lang.StringIndexOutOfBoundsException: String index out of range: 46
at java.lang.String.charAt(String.java:658)
at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212)
at org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121)
at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120)
at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97)
at
org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182)
at
org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108)
at
org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67)
at
org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
at
org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
at
org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50)
at
org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126)
at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120)
at
org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59)
at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072)
at
org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
at org.apache.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:46)
at org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
at org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
at org.apache.jena.graph.GraphUtil.listPredicates(GraphUtil.java:66)
at org.apache.jena.rdf.model.impl.ModelCom.listPredicates(ModelCom.java:999)
at
org.apache.jena.rdf.model.impl.ModelCom.listNameSpaces(ModelCom.java:1012)
at
org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.addNameSpaces(BaseXMLWriter.java:219)
at
org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.setupNamespaces(BaseXMLWriter.java:488)
at
org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:470)
at
org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:460)
at
org.apache.jena.riot.adapters.AdapterRDFWriter.write(AdapterRDFWriter.java:64)
at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202)
at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161)
at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112)
at org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205)
at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86)
at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379)
at knowledgegraph.JenaProcessor.getRDF(JenaProcessor.java:89)

Re: Exception in writing RDF from model

Posted by Diptendu Dutta <du...@gmail.com>.
I found the problem: spaces in the triple components

What would be a reasonable way to encode the triple strings?

On Tue 3 Mar, 2020 10:01 pm Andy Seaborne, <an...@apache.org> wrote:

> That codes OK - it uses transactions.
>
> Are you starting with a fresh database or an existing one with some data?
>
>      Andy
>
> On 03/03/2020 14:45, Diptendu Dutta wrote:
> > The code that is used to populate the database is given below.
> > It is called in side a FOR loop. Why is the database getting corrupted?
> >
> > static public void writeTriple(String corpus_file_id, String subject,
> > String predicate, String object) {
> >
> > dataset.begin(ReadWrite.WRITE) ;
> > Model model = null;
> >
> > try {
> >
> > model = dataset.getNamedModel(corpus_file_id);
> >
> >         Resource subjectResource =
> model.createResource(ns.concat(subject));
> >
> >         Property property = model.createProperty(ns.concat(predicate));
> >
> >         Resource objectResource =
> model.createResource(ns.concat(object));
> >
> >         model.add(subjectResource, property, objectResource);
> >         Statement statement = model.createStatement(subjectResource,
> > property, objectResource);
> >         model.add(statement);
> >         model.close();
> >         dataset.commit();
> > }
> > catch(Exception ex) {
> > ex.printStackTrace();
> > }
> > finally {
> >         dataset.end();
> > }
> >
> > }
> >
> > I can see that the database has been created:
> >
> > image.png
> >
> >
> > On Tue, Mar 3, 2020 at 7:40 PM Andy Seaborne <andy@apache.org
> > <ma...@apache.org>> wrote:
> >
> >     It looks like previously you were using the database withotu
> >     transactions and didn't shutdown cleanly.
> >
> >     The database has been corrupted. You'll need to rebuild it.
> >
> >     The code below is fine - the problem happened beforehand and is only
> >     now
> >     showing up.
> >
> >           Andy
> >
> >     On 03/03/2020 14:01, Diptendu Dutta wrote:
> >      > I am getting java.lang.StringIndexOutOfBoundsException while
> writing
> >      > RDF from a model (model.write()). I have tried with other
> mechanisms
> >      > such as RDFWriter, RDFDataMgr but I get exactly the same error.
> >      > Here is the code:
> >      >
> >      > static public String getRDF(String corpus_file_id) {
> >      >
> >      > String rdfString = null;
> >      >
> >      > Model model = null;
> >      >
> >      > dataset.begin(ReadWrite.READ) ;
> >      >
> >      > try {
> >      > model = dataset.getNamedModel(corpus_file_id);
> >      > model.write(System.out, "RDF/XML");
> >      > } catch (Exception e) {
> >      > // TODO Auto-generated catch block
> >      > e.printStackTrace();
> >      > }finally {
> >      > model.close();
> >      >         dataset.end();
> >      > }
> >      > return rdfString;
> >      > }
> >      >
> >      > java.lang.StringIndexOutOfBoundsException: String index out of
> >     range: 46
> >      > at java.lang.String.charAt(String.java:658)
> >      > at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212)
> >      > at
> >
>  org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121)
> >      > at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120)
> >      > at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
> >      > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126)
> >      > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120)
> >      > at
> >      >
> >
>  org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59)
> >      > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> >      > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> >      > at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072)
> >      > at
> >      >
> >
>  org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
> >      > at
> >     org.apache.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:46)
> >      > at
> >
>  org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
> >      > at
> >
>  org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
> >      > at
> org.apache.jena.graph.GraphUtil.listPredicates(GraphUtil.java:66)
> >      > at
> >
>  org.apache.jena.rdf.model.impl.ModelCom.listPredicates(ModelCom.java:999)
> >      > at
> >      >
> >
>  org.apache.jena.rdf.model.impl.ModelCom.listNameSpaces(ModelCom.java:1012)
> >      > at
> >      >
> >
>  org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.addNameSpaces(BaseXMLWriter.java:219)
> >      > at
> >      >
> >
>  org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.setupNamespaces(BaseXMLWriter.java:488)
> >      > at
> >      >
> >
>  org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:470)
> >      > at
> >      >
> >
>  org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:460)
> >      > at
> >      >
> >
>  org.apache.jena.riot.adapters.AdapterRDFWriter.write(AdapterRDFWriter.java:64)
> >      > at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202)
> >      > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161)
> >      > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112)
> >      > at
> >
>  org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205)
> >      > at
> >
>  org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86)
> >      > at
> org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379)
> >      > at knowledgegraph.JenaProcessor.getRDF(JenaProcessor.java:89)
> >      >
> >
>

Re: Exception in writing RDF from model

Posted by Andy Seaborne <an...@apache.org>.
That codes OK - it uses transactions.

Are you starting with a fresh database or an existing one with some data?

     Andy

On 03/03/2020 14:45, Diptendu Dutta wrote:
> The code that is used to populate the database is given below.
> It is called in side a FOR loop. Why is the database getting corrupted?
> 
> static public void writeTriple(String corpus_file_id, String subject, 
> String predicate, String object) {
> 
> dataset.begin(ReadWrite.WRITE) ;
> Model model = null;
> 
> try {
> 
> model = dataset.getNamedModel(corpus_file_id);
> 
>         Resource subjectResource = model.createResource(ns.concat(subject));
> 
>         Property property = model.createProperty(ns.concat(predicate));
> 
>         Resource objectResource = model.createResource(ns.concat(object));
> 
>         model.add(subjectResource, property, objectResource);
>         Statement statement = model.createStatement(subjectResource, 
> property, objectResource);
>         model.add(statement);
>         model.close();
>         dataset.commit();
> }
> catch(Exception ex) {
> ex.printStackTrace();
> }
> finally {
>         dataset.end();
> }
> 
> }
> 
> I can see that the database has been created:
> 
> image.png
> 
> 
> On Tue, Mar 3, 2020 at 7:40 PM Andy Seaborne <andy@apache.org 
> <ma...@apache.org>> wrote:
> 
>     It looks like previously you were using the database withotu
>     transactions and didn't shutdown cleanly.
> 
>     The database has been corrupted. You'll need to rebuild it.
> 
>     The code below is fine - the problem happened beforehand and is only
>     now
>     showing up.
> 
>           Andy
> 
>     On 03/03/2020 14:01, Diptendu Dutta wrote:
>      > I am getting java.lang.StringIndexOutOfBoundsException while writing
>      > RDF from a model (model.write()). I have tried with other mechanisms
>      > such as RDFWriter, RDFDataMgr but I get exactly the same error.
>      > Here is the code:
>      >
>      > static public String getRDF(String corpus_file_id) {
>      >
>      > String rdfString = null;
>      >
>      > Model model = null;
>      >
>      > dataset.begin(ReadWrite.READ) ;
>      >
>      > try {
>      > model = dataset.getNamedModel(corpus_file_id);
>      > model.write(System.out, "RDF/XML");
>      > } catch (Exception e) {
>      > // TODO Auto-generated catch block
>      > e.printStackTrace();
>      > }finally {
>      > model.close();
>      >         dataset.end();
>      > }
>      > return rdfString;
>      > }
>      >
>      > java.lang.StringIndexOutOfBoundsException: String index out of
>     range: 46
>      > at java.lang.String.charAt(String.java:658)
>      > at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212)
>      > at
>     org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121)
>      > at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120)
>      > at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50)
>      > at
>      >
>     org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
>      > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126)
>      > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120)
>      > at
>      >
>     org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59)
>      > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
>      > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
>      > at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072)
>      > at
>      >
>     org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
>      > at
>     org.apache.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:46)
>      > at
>     org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
>      > at
>     org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
>      > at org.apache.jena.graph.GraphUtil.listPredicates(GraphUtil.java:66)
>      > at
>     org.apache.jena.rdf.model.impl.ModelCom.listPredicates(ModelCom.java:999)
>      > at
>      >
>     org.apache.jena.rdf.model.impl.ModelCom.listNameSpaces(ModelCom.java:1012)
>      > at
>      >
>     org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.addNameSpaces(BaseXMLWriter.java:219)
>      > at
>      >
>     org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.setupNamespaces(BaseXMLWriter.java:488)
>      > at
>      >
>     org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:470)
>      > at
>      >
>     org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:460)
>      > at
>      >
>     org.apache.jena.riot.adapters.AdapterRDFWriter.write(AdapterRDFWriter.java:64)
>      > at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202)
>      > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161)
>      > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112)
>      > at
>     org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205)
>      > at
>     org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86)
>      > at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379)
>      > at knowledgegraph.JenaProcessor.getRDF(JenaProcessor.java:89)
>      >
> 

Re: Exception in writing RDF from model

Posted by Diptendu Dutta <du...@gmail.com>.
The code that is used to populate the database is given below.
It is called in side a FOR loop. Why is the database getting corrupted?

static public void writeTriple(String corpus_file_id, String subject,
String predicate, String object) {

dataset.begin(ReadWrite.WRITE) ;
Model model = null;

try {

model = dataset.getNamedModel(corpus_file_id);

       Resource subjectResource = model.createResource(ns.concat(subject));

       Property property = model.createProperty(ns.concat(predicate));

       Resource objectResource = model.createResource(ns.concat(object));

       model.add(subjectResource, property, objectResource);
       Statement statement = model.createStatement(subjectResource,
property, objectResource);
       model.add(statement);
       model.close();
       dataset.commit();
}
catch(Exception ex) {
ex.printStackTrace();
}
finally {
       dataset.end();
}

}

I can see that the database has been created:

[image: image.png]


On Tue, Mar 3, 2020 at 7:40 PM Andy Seaborne <an...@apache.org> wrote:

> It looks like previously you were using the database withotu
> transactions and didn't shutdown cleanly.
>
> The database has been corrupted. You'll need to rebuild it.
>
> The code below is fine - the problem happened beforehand and is only now
> showing up.
>
>      Andy
>
> On 03/03/2020 14:01, Diptendu Dutta wrote:
> > I am getting java.lang.StringIndexOutOfBoundsException while writing
> > RDF from a model (model.write()). I have tried with other mechanisms
> > such as RDFWriter, RDFDataMgr but I get exactly the same error.
> > Here is the code:
> >
> > static public String getRDF(String corpus_file_id) {
> >
> > String rdfString = null;
> >
> > Model model = null;
> >
> > dataset.begin(ReadWrite.READ) ;
> >
> > try {
> > model = dataset.getNamedModel(corpus_file_id);
> > model.write(System.out, "RDF/XML");
> > } catch (Exception e) {
> > // TODO Auto-generated catch block
> > e.printStackTrace();
> > }finally {
> > model.close();
> >         dataset.end();
> > }
> > return rdfString;
> > }
> >
> > java.lang.StringIndexOutOfBoundsException: String index out of range: 46
> > at java.lang.String.charAt(String.java:658)
> > at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212)
> > at org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121)
> > at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120)
> > at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50)
> > at
> >
> org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
> > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126)
> > at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120)
> > at
> >
> org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59)
> > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> > at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> > at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072)
> > at
> >
> org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
> > at org.apache.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:46)
> > at
> org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
> > at
> org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
> > at org.apache.jena.graph.GraphUtil.listPredicates(GraphUtil.java:66)
> > at
> org.apache.jena.rdf.model.impl.ModelCom.listPredicates(ModelCom.java:999)
> > at
> >
> org.apache.jena.rdf.model.impl.ModelCom.listNameSpaces(ModelCom.java:1012)
> > at
> >
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.addNameSpaces(BaseXMLWriter.java:219)
> > at
> >
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.setupNamespaces(BaseXMLWriter.java:488)
> > at
> >
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:470)
> > at
> >
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:460)
> > at
> >
> org.apache.jena.riot.adapters.AdapterRDFWriter.write(AdapterRDFWriter.java:64)
> > at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202)
> > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161)
> > at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112)
> > at
> org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205)
> > at
> org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86)
> > at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379)
> > at knowledgegraph.JenaProcessor.getRDF(JenaProcessor.java:89)
> >
>

Re: Exception in writing RDF from model

Posted by Andy Seaborne <an...@apache.org>.
It looks like previously you were using the database withotu 
transactions and didn't shutdown cleanly.

The database has been corrupted. You'll need to rebuild it.

The code below is fine - the problem happened beforehand and is only now 
showing up.

     Andy

On 03/03/2020 14:01, Diptendu Dutta wrote:
> I am getting java.lang.StringIndexOutOfBoundsException while writing
> RDF from a model (model.write()). I have tried with other mechanisms
> such as RDFWriter, RDFDataMgr but I get exactly the same error.
> Here is the code:
> 
> static public String getRDF(String corpus_file_id) {
> 
> String rdfString = null;
> 
> Model model = null;
> 
> dataset.begin(ReadWrite.READ) ;
> 
> try {
> model = dataset.getNamedModel(corpus_file_id);
> model.write(System.out, "RDF/XML");
> } catch (Exception e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }finally {
> model.close();
>         dataset.end();
> }
> return rdfString;
> }
> 
> java.lang.StringIndexOutOfBoundsException: String index out of range: 46
> at java.lang.String.charAt(String.java:658)
> at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212)
> at org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121)
> at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120)
> at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50)
> at
> org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
> at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126)
> at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120)
> at
> org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59)
> at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352)
> at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072)
> at
> org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
> at org.apache.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:46)
> at org.apache.jena.util.iterator.NiceIterator.asSet(NiceIterator.java:208)
> at org.apache.jena.util.iterator.NiceIterator.toSet(NiceIterator.java:199)
> at org.apache.jena.graph.GraphUtil.listPredicates(GraphUtil.java:66)
> at org.apache.jena.rdf.model.impl.ModelCom.listPredicates(ModelCom.java:999)
> at
> org.apache.jena.rdf.model.impl.ModelCom.listNameSpaces(ModelCom.java:1012)
> at
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.addNameSpaces(BaseXMLWriter.java:219)
> at
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.setupNamespaces(BaseXMLWriter.java:488)
> at
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:470)
> at
> org.apache.jena.rdfxml.xmloutput.impl.BaseXMLWriter.write(BaseXMLWriter.java:460)
> at
> org.apache.jena.riot.adapters.AdapterRDFWriter.write(AdapterRDFWriter.java:64)
> at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202)
> at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161)
> at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112)
> at org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205)
> at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86)
> at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379)
> at knowledgegraph.JenaProcessor.getRDF(JenaProcessor.java:89)
>