2013-10-13 204 views
2

我有一個需求,使用OWL-API在本體中創建一個類,而不添加任何實例。OWL API - 創建沒有實例的類

我檢查了示例和文檔,但所有的地方都是與個人/實例一起創建的。有沒有一種方法,沒有任何實例創建類(和與他們以後)

回答

0

如果我想創建一個建模元素如類沒有實例從輸入字符串我會做這樣的事情:

OWLEntity entity = factory.getOWLEntity(EntityType.CLASS, IRI.create(input)); 

EntityType.CLASS可以更改爲其他元素,如EntityType.ObjectProperty。這是我處理這個問題的方式,當我想添加實例時,我只需向本體管理器添加一條新公理即可。

+0

謝謝!基本上解決了我的問題。然後我將創建的實體和OWLDeclarationAxiom添加到OWLOntologyManager對象 – jana

+0

對於@ jana的用例而言,這對於更具體(更可讀,我認爲)'factory.getOWLClass(IRI.create(input)) '這[示例中顯示](https://github.com/owlcs/owlapi/blob/master/contract/src/test/java/org/coode/owlapi/examples/Examples.java#L275)? –

+0

我一般不知道,但對於曼徹斯特語法,您需要指定類型。因此在那裏有類型。 – Artemis

2

從不需要添加實例來聲明和使用類。

例如:

OWLClass c = factory.getOWLClass(IRI.create(cInput)); 
OWLAxiom declareC = factory.getOWLDeclarationAxiom(c); 
// adding declareC to the ontology is necessary to have any output 
manager.addAxiom(ontology, declareC); 

爲了得到任何實體輸出保存的本體時,它必須使用在包含於本體一些公理。在這個例子中,這個公理就是類聲明;它可能是子類公理或斷言(在這種情況下,將創建一個實例)。

+0

謝謝Ignazio。此解決方案有效 – jana