OntModel を使用してそれを行う方法は知っていますが、このコンストラクターの問題は、インポートされたオントロジーからクラスも取得していて、BaseModel からクラスとサブクラスのみを取得したいことです。メソッド listSubjects() を使用すると、プロパティも取得できますが、それらは必要ありません。ありがとうございました。
質問する
1152 次
1 に答える
2
何があっても、ベース モデルからの結果のみが必要な場合は、OntModel
withからベース モデルを取得する必要があります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 に答える