0

OntModel を使用してそれを行う方法は知っていますが、このコンストラクターの問題は、インポートされたオントロジーからクラスも取得していて、BaseModel からクラスとサブクラスのみを取得したいことです。メソッド listSubjects() を使用すると、プロパティも取得できますが、それらは必要ありません。ありがとうございました。

4

1 に答える 1

2

何があっても、ベース モデルからの結果のみが必要な場合は、OntModelwithからベース モデルを取得する必要がありますOntModel.getBaseModel。ベース モデルもたまたま である場合はOntModel、単純にキャストできます。

OntModel model = ...;
OntModel base = (OntModel) model.getBaseModel();

他のクラスがサブモデルから来ている場合( によってインポートされたオントロジーとまったく同じではありませんが、でインポートされowl:importsたオントロジーowl:importsは のサブモデルになります)、同じ基本モデルでOntModel新しい を作成できますが、他のサブモデルは作成できません。OntModel

OntModel model = ...;
OntModel wrappedBase 
  = ModelFactory.createOntologyModel( model.getSpecification(), 
                                      model.getBaseModel() );

を使用wrappedBaseして、関心のあるクラスとサブクラスをリストします。2 番目の が本当に必要ない場合はOntModel、関心のあるものを表す基本モデルのステートメントを要求できますが、これにはオントロジー言語がどのようにクラスを表現するかについての知識。OWL モデルはおそらく最も一般的であるため、次のようにすることができます。

OntModel model = ...;
Model base = model.getBaseModel();
... = base.listStatements( null, RDF.type, OWL.Class );
... = base.listStatements( null, RDFS.subClassOf, null );

そして、それらのステートメントを操作します。もちろん、最初の 2 つのアプローチの方が簡単です。

于 2013-05-22T19:11:18.460 に答える