【问题标题】:How to retrieve a RDF Property如何检索 RDF 属性
【发布时间】:2014-08-29 15:43:20
【问题描述】:

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

您好!

【问题讨论】:

    标签: java jena authorize.net-cim


    【解决方案1】:

    我将从Reading and Writing RDF in Apache Jena 文档开始,然后阅读The Core RDF Api。理解RDF Data Model 的一个重要步骤是将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>
    

    变成下面的乌龟:

    <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 的模型 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]
    

    产生:

    【讨论】:

    • 感谢 Rob 的回复,也很抱歉没有提供完整的好例子。这是包含 CIM 中完整 SMIB 定义的较大文件的一部分。
    • 感谢@RobHall 的解释。我给了我一个很好的起点。
    • 别担心。学习如何最好地参与社区需要一点时间:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2023-03-10
    • 2011-08-03
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多