从耶拿提取FOAF信息

时间:2011-09-29 01:52:10

标签: jena foaf

我是新来的,我对FOAF有些疑问。我用jena创建了一个这样的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 个答案:

答案 0 :(得分:1)

首先要说的是,您引用的两种形式与RDF具有完全相同的含义 - 也就是说,它们在解析为RDF图时会生成完全相同的三元组。出于这个原因,通常不值得担心编写器生成的XML的确切语法。通常,RDF / XML不是一种友好的语法。如果您只想序列化Model,以便稍后再次阅读,我会建议Turtle syntax因为它更紧凑,更容易让人阅读和理解。

但是,有一个原因可能需要特别关注XML序列化,即如果您希望该文件是XML处理管道(例如XSLT或类似的)的一部分。在这种情况下,您可以通过更改示例的最后一行来生成所需的格式:

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

或等同地

m.write( f, FileUtils.langXMLAbbrev );