java - 如何检索 RDF 属性

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

您好!

最佳答案

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

您会注意到,除非您讨论如何序列化/反序列化 RDF/XML,否则像“标签”这样的 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 的模型 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]

产生:

关于java - 如何检索 RDF 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571700/

相关文章:

java - 在 <div> 中动态加载 Wicket 面板

java - Jena TDB 在命名模型访问时挂起/卡住

java - 使用 Model.setNsPrefix() 定义前缀后不能使用带前缀的 URI?

database-design - 如何将信用卡数据保存在数据库中?

java - 从 DER 格式的 String base64 编码创建 PrivateKey 和 PublicKey

java - 使用 TOMCAT-Jersey Rest 获取 404 错误

parsing - 如何将 Apache Any23 RDF 语句添加到 Apache Jena?

payment-gateway - 验证新的 CIM 付款配置文件

java - 调整 Java JFrame 的大小会改变图形组件的颜色