0

I am using the rdf4j library to export xml files. I use org.eclipse.rdf4j.rio.RDFWriter to save it in a file and I need to define the base namespace. So I expect to have something like :

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xml:base="http://exmaple.org/">
<rdf:Description rdf:about=foo>
<rdf:type rdf:resource= FOO>
...

I understood that I can set a namespace using handleNamespace(). But I cant figure out how to use it to set the base namespace : I tried :

ModelBuilder builder = new ModelBuilder();
ValueFactory vf = SimpleValueFactory.getInstance();
builder.add(vf.createIRI("base:foo"), RDFS.ISDEFINEDBY, vf.createIRI("base:FOO");
Model model = builder.build();
RDFWriter writer = Rio.createWriter(RDFFormat.RDFXML, someOutputStream);
try {
  writer.startRDF();
  writer.handleNamespace("base", "http://exmaple.org/");
      for (Statement st: model) {
  writer.handleStatement(st);
  }
  writer.endRDF();
...

but this does not give me what I expect :

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:base="http://exmaple.org/">
<rdf:Description rdf:about=base:foo>
<rdf:type rdf:resource= base:FOO>

Any ideas?

Abdelghani
  • 455
  • 2
  • 9
  • 19

0 Answers0