0

私はここに来たばかりで、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);

誰が私に言うことができますか?ありがとう

4

1 に答える 1

1

最初に言うことは、引用した 2 つの形式は RDF に対してまったく同じ意味を持つということです。つまり、RDF グラフに解析すると、まったく同じトリプルのセットが生成されます。このため、通常、ライターによって生成される XML の正確な構文について心配する価値はありません。一般に、RDF/XML は読みやすい構文ではありません。をシリアライズしてModel、後でもう一度読み込めるようにするだけの場合は、よりコンパクトで人間が読みやすく理解しやすいTurtle 構文をお勧めします。

ただし、XML シリアライゼーションに特に注意を払う必要がある理由が 1 つあります。それは、ファイルを XML 処理パイプライン (XSLT など) の一部にしたい場合です。この場合、例の最後の行を変更することで、必要な形式を生成できます。

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

または同等に、

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