2013-05-22 54 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); 

,並與這些語句的工作。當然,前兩種方法會更容易。