我将从Reading and Writing RDF in Apache Jena文档开始,然后阅读The Core RDF Api。理解RDF Data Model的一个重要步骤是将XML与您对RDF的理解分离开来。 RDF是一种图形数据模型,它恰好具有一种XML格式的序列化。
您会注意到,除非您在讨论如何序列化/反序列化RDF/XML,否则在讨论中实际上根本没有显示xml特定语言(如“tags”)。
为了使您所看到的数据更加人性化,我建议将其写入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-080027008896
是a
cim:SynchronousMachineTimeConstantReactance
你会寻找相应的三元组。耶拿的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]
主要生产:
感谢您的答复抢,对不起没有提供一个完整的例子。这是包含CIM中完整SMIB定义的更大文件的一部分。 – 2014-09-01 14:41:46
并感谢@RobHall的解释。我给了我一个很好的起点。 – 2014-09-02 14:38:52
别担心。学习如何最好地参与社区需要一点时间:) – 2014-09-02 15:11:42