我想知道如何从Jena的rdf模型中获取元素,我有一个类似(http://id.loc.gov/authorities/subjects/sh85014171.rdf)的模型:
<rdf:RDF><madsrdf:Topic rdf:about="http://id.loc.gov/authorities/subjects/sh85014171">
<rdf:type rdf:resource="http://www.loc.gov/mads/rdf/v1#Authority"/>
<madsrdf:authoritativeLabel xml:lang="en">Biochemistry</madsrdf:authoritativeLabel>
<madsrdf:elementList rdf:parseType="Collection"><madsrdf:TopicElement>
<madsrdf:elementValue xml:lang="en">Biochemistry</madsrdf:elementValue>
</madsrdf:TopicElement>
</madsrdf:elementList>
<madsrdf:hasVariant>
我想得到:
<madsrdf:authoritativeLabel xml:lang="en">**Biochemistry**</madsrdf:authoritativeLabel>
我写了一些像:
model.read(cMatch.toString());
model.write(System.out);
Resource ENTITY_TYPE=model.getResource("http://www.loc.gov/mads/rdf/v1#authoritativeLabel");
StmtIterator iter = model.listStatements(null, RDF.type, ENTITY_TYPE);
while (iter.hasNext()) {
String entityID = iter.next().getSubject().getURI();
System.out.println(entityID);
}
但是我得到了一个skos格式的模型(与http://id.loc.gov/authorities/subjects/sh85014171.rdf不同,我也丢失了关于主要主题的第一个信息)并且我在entityID中没有得到任何东西。我发现的其他问题如果我使用:
model.listStatements(null, RDF.type, ENTITY_TYPE);
我将得到所有结果,其中有一个带有该标签的声明,但我只希望主要主题的authoritativeLabel
非closeMatch或更窄。
提前谢谢!