1

シナリオは次のとおりです...必要なすべてのオブジェクトを記述したXSDファイルがあります。JAXB を使用して Java でオブジェクトを問題なく作成できます。これらのオブジェクトに解析する必要がある XML/RDF ファイルがあります。

これを行う最も簡単な方法は何ですか?

私は Jena を調べて遊んでみましたが、生成された XSD オブジェクトに XML/RDF ファイルを簡単にマップする方法がわかりません。XSD ファイルと XML/RDF ファイルのスニペットを次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:a="http://langdale.com.au/2005/Message#" 
    xmlns:sawsdl="http://www.w3.org/ns/sawsdl" 
    targetNamespace="http://iec.ch/TC57/2007/profile#" 
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified" 
    xmlns="http://langdale.com.au/2005/Message#" 
    xmlns:m="http://iec.ch/TC57/2007/profile#">
<xs:annotation/>
<xs:element name="Profile" type="m:Profile"/>
<xs:complexType name="Profile">
<xs:sequence>
<xs:element name="Breaker" type="m:Breaker" minOccurs="0" maxOccurs="unbounded"/>

XML/RDF:

<!-- CIM XML Output For switch783:(295854688) -->
<cim:Switch rdf:ID="Switch_295854688">
    <cim:IdentifiedObject.mRID>Switch_295854688</cim:IdentifiedObject.mRID>
    <cim:IdentifiedObject.aliasName>Switch_295854688</cim:IdentifiedObject.aliasName>
    <cim:ConductingEquipment.phases 
        rdf:resource="http://iec.ch/TC57/2009/CIM-schema-cim14#PhaseCode.ABC" />
    <cim:Switch.circuit2>0001406</cim:Switch.circuit2>
    <cim:Equipment.Line rdf:resource="#Line_0001406" />
4

3 に答える 3

2

RDF ステートメントを繰り返し処理し、 BeanUtilsなどの Bean 作成ユーティリティを介して JAXB Bean を作成できます。

同じ主語を持つステートメントがグループで処理されるような形式でステートメントを繰り返します。rdf:type ステートメントはインスタンス化するクラスを定義し、残りはおそらく作成された Bean のプロパティにマップできます。

Java リフレクションに精通している場合、これはおそらく非常に簡単です。

于 2010-05-16T16:45:52.983 に答える
1

あなたの投稿から明らかでないのは、XSD コンポーネントと、RDF (または RDFS や OWL、あるいはその両方などのそのスキーマ) にある特定のリソース データとの間のマッピングです。このマッピングを理解している場合は、Java オブジェクトを作成するための JAXB 実装 (RDF として表されるデータをオブジェクトに入力するためのビューを使用)、RDF/XML を Java で解析するための Jena 実装が既にあることを考えると、次のことをお勧めします。 Java「ブリッジ」を実装できます。これは、RDF データの Jena モデルにクエリを実行して、JAXB によって生成されたクラスの新しいオブジェクトにマップし、必要な XML にマーシャリングできる効果的なカスタム コードです。

これを行うための Java コードをまったく作成したくない場合は、XSLT または XQuery を作成して、RDF/XMLを必要な XML に直接変換することもできますが、これは前述のオプションよりも多くの作業が必要になるように思えます。あなたはすでに持っています。

于 2010-05-11T08:09:31.760 に答える
0

Resource/Subject/etc オブジェクトには、DOM 要素に変換するメソッドがありませんか? あるいは (確かに最も適切な解決策ではありません)、文字列にシリアライズして文字列を読み取り、JAXB で作成された (XSD から) オブジェクトの setter メソッドを使用するのはどうですか??

于 2010-05-07T22:10:56.873 に答える