我知道如何使用 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
列出您感兴趣的类和子类。如果您真的不想要第二个OntModel
,那么您可以要求基本模型中代表您感兴趣的事物的语句,但这需要了解本体语言如何表示类。OWL 模型可能是最常见的,因此您可以执行以下操作:
OntModel model = ...;
Model base = model.getBaseModel();
... = base.listStatements( null, RDF.type, OWL.Class );
... = base.listStatements( null, RDFS.subClassOf, null );
并使用这些语句。当然,前两种方法会更容易。
于 2013-05-22T19:11:18.460 回答