Извлечение информации FOAF из Йены - PullRequest
0 голосов
/ 29 сентября 2011

Я новичок здесь, и у меня есть некоторые проблемы с FOAF.Я использую Джену, создаю FOAF следующим образом:

<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
    <foaf:phone>12312312312</foaf:phone>
    <foaf:nick>L</foaf:nick>
    <foaf:name>zhanglu</foaf:name>

Но я хочу, чтобы FOAF показывал вот так:

<foaf:Person>
    <foaf:phone>12312312312</foaf:phone>
    <foaf:nick>L</foaf:nick>
    <foaf:name>zhanglu</foaf:name>
</foaf:Person>

Что я могу сделать?

это мой исходный код:

Model m = ModelFactory.createDefaultModel();
m.setNsPrefix("foaf", FOAF.NS);

Resource r = m.createResource(NS);
r.addLiteral(FOAF.name, "zhanglu");
r.addProperty(FOAF.nick, "L");
r.addProperty(FOAF.phone, "123123123");
r.addProperty(RDF.type, FOAF.Person);

FileOutputStream f = new FileOutputStream(fileName);
m.write(f);

кто может мне сказать?спасибо

1 Ответ

1 голос
/ 04 октября 2011

Первое, что нужно сказать, это то, что две указанные вами формы имеют абсолютно одинаковое значение для RDF, то есть они генерируют точно такой же набор троек при разборе в RDF-граф. По этой причине обычно не стоит беспокоиться о точном синтаксисе XML, созданного автором. RDF / XML, как правило, не является дружественным синтаксисом для чтения. Если вы просто хотите сериализовать Model, чтобы потом можно было прочитать его снова, я бы предложил Синтаксис Turtle , поскольку он более компактен и проще для чтения и понимания людьми.

Однако есть одна причина, по которой вы можете позаботиться конкретно о сериализации XML: если вы хотите, чтобы файл был частью конвейера обработки XML (например, XSLT или аналогичного). В этом случае вы можете создать нужный формат, изменив последнюю строку вашего примера:

m.write( f, "RDF/XML-ABBREV" );

или, что эквивалентно,

m.write( f, FileUtils.langXMLAbbrev );
...