0
我知道如何使用OntModel來完成它,但是這個構造函數的問題是我也從導入的本體中得到了類,而我只想從BaseModel中獲取類和子類。 如果我使用方法listSubjects()我也得到屬性,我不希望他們。 謝謝。如何使用類模型從本體中只獲取類和子類?
我知道如何使用OntModel來完成它,但是這個構造函數的問題是我也從導入的本體中得到了類,而我只想從BaseModel中獲取類和子類。 如果我使用方法listSubjects()我也得到屬性,我不希望他們。 謝謝。如何使用類模型從本體中只獲取類和子類?
無論如何,如果您只想從基本模型得到結果,您必須從OntModel
和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);
,並與這些語句的工作。當然,前兩種方法會更容易。