2013-05-22 19 views

回答

2

无论如何,如果您只想从基本模型得到结果,您必须从OntModelOntModel.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); 

,并与这些语句的工作。当然,前两种方法会更容易。