2013-10-13 116 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