如何检索RDF属性

时间:2014-08-29 15:43:20

标签: java jena authorize.net-cim

我在RDF / XML

中有这条信息
<rdf:RDF xmlns:cim="http://iec.ch/TC57/2012/CIM-schema-cim16#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <cim:SynchronousMachineTimeConstantReactance rdf:ID="_54302da0-b02c-11e3-af35-080027008896">
  <cim:IdentifiedObject.aliasName>GENCLS_DYN</cim:IdentifiedObject.aliasName>
  <cim:IdentifiedObject.name>RoundRotor Dynamics</cim:IdentifiedObject.name>
  <cim:SynchronousMachineTimeConstantReactance.tpdo>0.30000001192092896</cim:SynchronousMachineTimeConstantReactance.tpdo>
  <cim:SynchronousMachineTimeConstantReactance.tppdo>0.15000000596046448</cim:SynchronousMachineTimeConstantReactance.tppdo>

我已经学会了一些关于如何阅读文档的内容,但现在我想更进一步。我正在“玩”API函数试图获取值但我迷失了(我想我不能正确理解JENA和RDF是如何工作的)。那么,我怎样才能得到每个标签的值?

问候!

1 个答案:

答案 0 :(得分:1)

我将从Reading and Writing RDF in Apache Jena文档开始,然后阅读The Core RDF Api。理解RDF Data Model的一个重要步骤是从您对RDF的理解中分离出任何XML概念。 RDF是一个图形数据模型,恰好有一个XML格式的序列化。

你会注意到,除非你在讨论如何序列化/反序列化RDF / XML,否则在讨论中根本不会出现像“tags”这样的特定于xml的语言。

为了使您所看到的数据更加人性化,我建议您在TURTLE中写出来。 TURTLE(或TTL)是RDF的另一个序列化,更容易读取或写入。

以下代码将在TURTLE中表达您的数据,有助于您了解所看到的内容。

final InputStream yourInputFile = ...;
final Model model = ModelFactory.createDefaultModel();
model.read(yourInputFile, "RDF/XML");
model.write(System.out, null, "TURTLE");

在提交有关主题领域的问题时,您还希望提供最少的工作示例。例如,我必须在数据中添加一些缺少的结束标记,以使其成为有效的XML:

<rdf:RDF xmlns:cim="http://iec.ch/TC57/2012/CIM-schema-cim16#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <cim:SynchronousMachineTimeConstantReactance rdf:ID="_54302da0-b02c-11e3-af35-080027008896">
      <cim:IdentifiedObject.aliasName>GENCLS_DYN</cim:IdentifiedObject.aliasName>
      <cim:IdentifiedObject.name>RoundRotor Dynamics</cim:IdentifiedObject.name>
      <cim:SynchronousMachineTimeConstantReactance.tpdo>0.30000001192092896</cim:SynchronousMachineTimeConstantReactance.tpdo>
      <cim:SynchronousMachineTimeConstantReactance.tppdo>0.15000000596046448</cim:SynchronousMachineTimeConstantReactance.tppdo>
   </cim:SynchronousMachineTimeConstantReactance>
</rdf:RDF>

以下是TURTLE:

<file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896>
        a                               cim:SynchronousMachineTimeConstantReactance ;
        cim:IdentifiedObject.aliasName  "GENCLS_DYN" ;
        cim:IdentifiedObject.name       "RoundRotor Dynamics" ;
        cim:SynchronousMachineTimeConstantReactance.tpdo "0.30000001192092896" ;
        cim:SynchronousMachineTimeConstantReactance.tppdo "0.15000000596046448" .

RDF在语句级别运行,因此要找出您的_54302da0-b02c-11e3-af35-080027008896a cim:SynchronousMachineTimeConstantReactance,您需要查找相应的三元组。 Jena的Model API(链接到上面)将为您提供识别properties that resources have的方法。

以下将列出主题为上述资源的所有陈述:

final Resource s = model.getResource("file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896");
final ExtendedIterator<Statement> properties = s.listProperties();
while( properties.hasNext() ) {
    System.out.println(properties.next());
}

产生:

[file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896, http://iec.ch/TC57/2012/CIM-schema-cim16#SynchronousMachineTimeConstantReactance.tppdo, "0.15000000596046448"]
[file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896, http://iec.ch/TC57/2012/CIM-schema-cim16#SynchronousMachineTimeConstantReactance.tpdo, "0.30000001192092896"]
[file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896, http://iec.ch/TC57/2012/CIM-schema-cim16#IdentifiedObject.name, "RoundRotor Dynamics"]
[file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896, http://iec.ch/TC57/2012/CIM-schema-cim16#IdentifiedObject.aliasName, "GENCLS_DYN"]
[file:///R:/workspaces/create/git-svn/create-sparql/RDF/XML#_54302da0-b02c-11e3-af35-080027008896, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://iec.ch/TC57/2012/CIM-schema-cim16#SynchronousMachineTimeConstantReactance]

产生: