0

我是新来的,我对 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);

谁能告诉我?谢谢

4

1 回答 1

1

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

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

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

或者,等效地,

m.write( f, FileUtils.langXMLAbbrev );
于 2011-10-04T11:04:13.900 回答