0

我在 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 的工作原理)。那么,如何获取每个标签的值呢?

问候!

4

1 回答 1

1

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

您会注意到,“标签”之类的特定于 xml 的语言实际上根本不会出现在讨论中,除非您正在讨论如何序列化/反序列化 RDF/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-080027008896isa cim:SynchronousMachineTimeConstantReactance您将查找相应的三元组。Jena 的模型 API(链接到上面)将为您提供识别资源属性的方法。

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

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]

产生:

于 2014-08-29T16:25:37.943 回答