从jena的Model rdf中获取一个元素

时间:2018-04-09 13:18:26

标签: sparql rdf jena

我想知道如何从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或更窄。 提前谢谢!

0 个答案:

没有答案