耶拿Java Api读取RDF文件?

| 我有一个rdf文件,其格式为:
<rdf:RDF
xmlns:geo=\"xyz\"
xmlns:quality=\"xyz\"
xmlns:purl=\"xyz\"
xmlns:swrlb=\"xyz\"> 

  <rdf:Description rdf:about=\"title1\">
<rdf:type rdf:resource=\"resource22\"/>
<info:contains>fromdisk1</info:contains>
<info:has_text_value>
The location 
</info:has_text_value>
  </rdf:Description>
<rdf:Description rdf:about=\"title2\">
<rdf:type rdf:resource=\"resource12\"/>
<info:contains>fromdisk2</info:contains>
<info:has_text_value>
xyz 
   </info:has_text_value>
  </rdf:Description>

  </rdf:RDF>
我想存储info:has_text_value的值和相应的info:contains。我已经使用JENA API尝试了很多方法,但是没有成功。你能指导我怎么做吗。任何源代码都会有很大的帮助。谢谢     
已邀请:
        如果这是您的RDF的代表性示例,则存在一些问题: 您不应断言所有前缀都是“ 2”。当您使用缩写名称(例如
info:contains
geo:something
)时,用于标识资源的实际URI是名称空间URI和本地名称的串联。正确使用的名称空间URI可以消除在其他情况下类似命名的概念的歧义,例如,“ 5”和“ 6”可能分别表示显示屏和蜥蜴。但是,如果
computers
reptiles
命名空间都具有相同的值,则两个URI都表示相同的资源,并且对一个资源所做的每个语句也对另一个资源进行了声明。这不是一个好主意。 您的示例不完整,因为未定义“ 9”命名空间,因此“ 3”并不表示合法属性URI。 资源“ 11”具有相对URI,即它表示相对于文档的基本URI。这意味着,例如,如果您从其他位置(例如,在磁盘上或从“ 12” URL)读取包含文档的文件,则“ 11”的身份将更改。您可以通过添加“ 14”语句来声明文档的基本URI,从而减轻这种影响。 解决这些问题(并猜测您的名称空间)将获得:
<rdf:RDF
  xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
  xmlns:geo=\"http://example.org/schema/geo#\"
  xmlns:quality=\"http://example.org/schema/quality#\"
  xmlns:purl=\"http://example.org/schema/purl#\"
  xmlns:swrlb=\"http://example.org/schema/swrlb#\"
  xmlns:info=\"http://example.org/schema/info#\"
  xml:base=\"http://example.org/data/test#\"
> 

<rdf:Description rdf:about=\"title1\">
  <rdf:type rdf:resource=\"resource22\"/>
  <info:contains>fromdisk1</info:contains>
  <info:has_text_value>The location</info:has_text_value>
</rdf:Description>

<rdf:Description rdf:about=\"title2\">
  <rdf:type rdf:resource=\"resource12\"/>
  <info:contains>fromdisk2</info:contains>
  <info:has_text_value>xyz</info:has_text_value>
</rdf:Description>

</rdf:RDF>
有很多在线资源向您展示如何在Jena中读取和操作RDF数据。为了让您入门,这是一种方法: 首先创建一个
Model
并将数据加载到其中。我假设您的数据在文件
./rdf/test.rdf
中:
Model m = FileManager.get().loadModel( \"./rdf/test.rdf\" );
现在创建一个表示
title2
的资源:
String NS = \"http://example.org/data/test#\";
Resource title2 = m.getResource( NS + \"title2\" );
现在列出资源的属性:
for (StmtIterator i = title2.listProperties(); i.hasNext(); ) {
    Statement s = i.next();
    System.out.println( \"title2 has property \" + s.getPredicate() + 
                        \" with value \" + s.getObject() );
}
或者,创建一个属性对象以访问
info:contains
属性:
Property contains = m.getProperty( NS + \"contains\" );
System.out.println( \"title2.contains = \" + title2.getProperty( contains )
                                                 .getObject();
    

要回复问题请先登录注册