2017-10-08 11 views
0

Apache Jenaの使い方は非常に新しいです。私はここで問題に直面しています。Apache Jenaは自動的にオブジェクトのプロパティを一緒にマージします

Protegeを使用してRDFファイルを設計しました。基本的には、私はアソシエーション、集約、&の3つのオブジェクトプロパティを持っています。 AGGREGATION & COMPOSITIONは両方とも、協会のサブプロパティです。 Protegeからここにあるように、これら3つのオブジェクトはうまく一緒に生成されます。

しかし、JavaでJenaを使用すると(私のコードは以下のとおりです)、生成される出力は期待される結果とは異なります。

モデルm = ModelFactory.createDefaultModel(); 文字列NS = "http://example.com/test/";

OntModel ontoModel = >ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);  

    ObjectProperty ASSOCIATION = ontoModel.createObjectProperty(NS + >"ASSOCIATION"); 
    ObjectProperty AGGREGATION = ontoModel.createObjectProperty(NS + >"AGGREGATION"); 
    AGGREGATION.addProperty(RDFS.subPropertyOf, ASSOCIATION); 
    ObjectProperty COMPOSITION = ontoModel.createObjectProperty(NS + >"COMPOSITION"); 
    COMPOSITION.addProperty(RDFS.subPropertyOf, ASSOCIATION); 

あなたが生成した出力で見ることができるように:

1)ASSOCIATIONオブジェクトのプロパティがAGGREGATION & COMPOSITIONの下にネストされています。

2)AGGREGATION & COMPOSITIONのウェイサブプロパティが生成されます。

ここのお手伝いをさせていただきます。

Expected output generated from Protege & output generated with Jena

ありがとうございます。

答えて

1

表示している2つのRDFファイルは、意味的に同等です。あなたが見ているのは、公理の順序付けの違いです。 OWLは公理直列化のための順序を定義しないので、各ライブラリはこの点でそれ自身の選択をします。

Protegeはオントロジーを書き出すためにOWL APIに依存しており、OWL APIはまず公理をタイプ別にソートし、その内容(この場合は公理のサブプロパティーのIRI)をソートします。

RDF非対応のツールを使用している場合や、バージョン管理システムにオントロジーを格納している場合(順序の違いによって大きな、不要なdiffが発生する可能性がある)、これらの違いは無視できます。使用しているコードが期待どおりに動作しています。

関連する問題