【发布时间】:2014-11-16 14:56:01
【问题描述】:
我有一个这样的 RDF/XML 文件:
<rdf:RDF
xmlns:go="http://www.geneontology.org/dtds/go.dtd#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<go:term rdf:about="http://www.geneontology.org/go#GO:0000001">
<go:accession>GO:0000001</go:accession>
<go:name>mitochondrion inheritance</go:name>
<go:synonym>mitochondrial inheritance</go:synonym>
<go:definition>The distribution of mitochondria, including the mitochondrial genome, into daughter cells after mitosis or meiosis, mediated by interactions between mitochondria and the cytoskeleton.</go:definition>
<go:is_a rdf:resource="http://www.geneontology.org/go#GO:0048308" />
<go:is_a rdf:resource="http://www.geneontology.org/go#GO:0048311" />
</go:term>
</rdf:RDF>
然后我必须把这个 RDF/XML 转换成 N-Triples 格式,我已经用 Jena 自动完成了:
FileManager.get().addLocatorClassLoader(Converter.class.getClassLoader());
Model model = FileManager.get().loadModel("smallfacts.rdf");
try {
File file= new File("outputsmall.txt");
model.write(new FileOutputStream(file), "N-Triples");
} catch (IOException e) {
e.printStackTrace();
但是我需要用前缀来缩短每个谓词。我必须得到这样的东西:
<http://www.geneontology.org/go#GO:2000391> is_a <http://www.geneontology.org/go#GO:2000389>.
<http://www.geneontology.org/go#GO:2000391> accession "GO:2000391".
我读过getNSPrefix(),并做了一些尝试,比如:
FileManager.get().addLocatorClassLoader(Converter.class.getClassLoader());
Model model = FileManager.get().loadModel("smallfacts.rdf");
try {
File file= new File("outputsmall.txt");
model.getNsPrefixURI("http://www.geneontology.org/dtds/go.dtd#");
model.write(new FileOutputStream(file), "N-Triples", "http://www.geneontology.org/dtds/go.dtd#");
} catch (IOException e) {
e.printStackTrace();
在这种情况下如何使用getNsPrefixURI()?我应该使用其他方法吗?
【问题讨论】:
-
n-triples 格式没有 iri 前缀。 IRI 始终是完整的。