我是新来的,我对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);
谁可以告诉我?
感谢
答案 0 :(得分:1)
首先要说的是,您引用的两种形式与RDF具有完全相同的含义 - 也就是说,它们在解析为RDF图时会生成完全相同的三元组。出于这个原因,通常不值得担心编写器生成的XML的确切语法。通常,RDF / XML不是一种友好的语法。如果您只想序列化Model
,以便稍后再次阅读,我会建议Turtle syntax因为它更紧凑,更容易让人阅读和理解。
但是,有一个原因可能需要特别关注XML序列化,即如果您希望该文件是XML处理管道(例如XSLT或类似的)的一部分。在这种情况下,您可以通过更改示例的最后一行来生成所需的格式:
m.write( f, "RDF/XML-ABBREV" );
或等同地
m.write( f, FileUtils.langXMLAbbrev );