Jena Model преобразует мое явное объявление типа RDF в неявное и портит формат - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть следующий код, который создает ресурс RDF с некоторыми заданными свойствами и печатает его на консоли.

    String uri = "http://krweb/";
    String name = "Giorgos Georgiou";
    String phone = "6976067554";
    String age = "27";
    String department = "ceid";
    String teaches = "java";

    Model model = ModelFactory.createOntologyModel();
    model.setNsPrefix("krweb", uri);

    Resource giorgosgeorgiou = model.createResource(uri+name.toLowerCase().replace(" ", ""), model.createResource(uri+"Professor"));

    Property has_name = model.createProperty(uri+"has_name");
    Property has_phone = model.createProperty(uri+"has_phone");
    Property has_age = model.createProperty(uri+"has_age");
    Property member_of = model.createProperty(uri+"member_of");
    Property teach = model.createProperty(uri+"teaches");

    giorgosgeorgiou.addProperty(teach, model.createResource(uri+teaches));
    giorgosgeorgiou.addProperty(member_of, model.createResource(uri+department));
    giorgosgeorgiou.addProperty(has_age,age);
    giorgosgeorgiou.addProperty(has_phone,phone);
    giorgosgeorgiou.addProperty(has_name,name);
   //giorgosgeorgiou.addProperty(RDF.type, model.createResource(uri+"Professor"));
    model.write(System.out,"RDF/XML");

Мне нужна модель, напечатанная в этом формате:

<rdf:Description rdf:about="http://krweb/giorgosgeorgiou">
    <rdf:type rdf:resource="http://krweb/Professor"/>
    <krweb:has_name>Giorgos Georgiou</krweb:has_name>
    <krweb:has_phone>6976067554</krweb:has_phone>
    <krweb:has_age>27</krweb:has_age>
    <krweb:member_of rdf:resource="http://krweb/ceid"/>
    <krweb:teaches rdf:resource="http://krweb/java" />
</rdf:Description>

Вместо этого я получаю это:

  <krweb:Professor rdf:about="http://krweb/giorgosgeorgiou">
    <krweb:has_name>Giorgos Georgiou</krweb:has_name>
    <krweb:has_phone>6976067554</krweb:has_phone>
    <krweb:has_age>27</krweb:has_age>
    <krweb:member_of rdf:resource="http://krweb/ceid"/>
    <krweb:teaches rdf:resource="http://krweb/java"/>
  </krweb:Professor>

Каким-то образом свойство типа rdf преобразуется в неявное объявление и представляется в том, что, я полагаю, является «симпатичным» форматом.Есть ли способ обойти это?

1 Ответ

0 голосов
/ 23 ноября 2018

Внутренне данные RDF хранятся в виде троек - не хранятся сведения о том, как они были отформатированы при вводе.

Вывод по умолчанию довольно RDF / XML.

Чтобы получить простое,плоское форматирование RDFFormat.RDFXML_PLAIN

RDFDataMgr.write(System.out, model, RDFFormat.RDFXML_PLAIN);
...