使用类型化类和rdf:id创建RDF模型

时间:2018-05-22 11:06:26

标签: java xml rdf jena

我遇到了这个问题:How match JAXB elements in CIM/RDF?正在寻找使用RDF创建CIM / XML文件的方法。 通过这个问题,我学会了如何以这种格式获取RDF文件

<rdf:Description rdf:about="idObject2">
    <myns:Object2.Property rdf:resource="#idAnotherObject"/>
    <cim:IdentifiedObject.aliasName>CP01</cim:IdentifiedObject.aliasName>
</rdf:Description>
<rdf:Description rdf:about="idObject1">
    <myns:GeneralObject.Object2 rdf:resource="#idObject2"/><cim:IdentifiedObject.aliasName>GT01</cim:IdentifiedObject.aliasName>
</rdf:Description>

CIM标准在rdf:资源的id中添加了#,因此我们不会像这样获得更多层次结构的格式

<rdf:Description rdf:about="idObject1">
    <myns:GeneralObject.Object2>
      <rdf:Description rdf:about="idObject2">
        <iso:Object2.Property rdf:resource="#idAnotherObject"/>
        <cim:IdentifiedObject.aliasName>CP01</cim:IdentifiedObject.aliasName>
      </rdf:Description>
    </myns:GeneralObject.Object2>
    <cim:IdentifiedObject.aliasName>GT01</cim:IdentifiedObject.aliasName>
  </rdf:Description>

RDF(或者只是JENA,我不确切地知道)当找到相同的id时,它嵌套了类。然后,为了处理数据,我们需要以某种方式解析rdf:resource字符串以删除#

所以,在这个背景下,我的问题是......

1)如何编写rdf:id而不是rdf:about

2)如何将rdf:Descritpion替换为我自己的班级名称,例如myns:Object1

谢谢!

1 个答案:

答案 0 :(得分:0)

要回答问题2,我必须以这种方式创建资源:

    Resource object1 = model.createResource(idObject1, 
            model.createResource(Basics.getURI()+ Object1.class.getSimpleName()))

所以这样输出就是这样的:

    <myns:Object1 rdf:about="idObject1">
        <myns:GeneralObject.Object2 rdf:resource="#idObject2"/>
        <cim:IdentifiedObject.aliasName>GT01</cim:IdentifiedObject.aliasName>
    </myns:Object1>