Создать модель RDF с типизированными классами и rdf: id - PullRequest
0 голосов
/ 22 мая 2018

Я получил этот вопрос: Как сопоставить элементы JAXB в CIM / RDF? ищет способы создания файлов CIM / XML с помощью RDF.Через вопрос, который я узнал, как получить файл 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 добавляет # в id в ресурсе rdf:, поэтому мы не получаем более иерархический формат, подобный этому

<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, я точно не знаю), когда находит тот же идентификатор, он вкладывает классы.Затем, чтобы обработать данные, нам нужно как-то разобрать строку rdf: resource, чтобы удалить #

Итак, с этим контекстом у меня возникают вопросы ...

1) Как мненапишите rdf:id вместо rdf:about

2) Как заменить rdf:Descritpion собственным именем класса, например, myns:Object1

Спасибо!

1 Ответ

0 голосов
/ 04 июня 2018

Чтобы ответить на вопрос 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>
...