【问题标题】:OWL API - create class without instancesOWL API - 创建没有实例的类
【发布时间】:2013-10-13 01:34:16
【问题描述】:

我需要使用 OWL-API 在本体中创建一个类而不添加任何实例。

我检查了示例和文档,但所有的类都是与个人/实例一起创建的。有没有办法在没有任何实例的情况下创建类(以及稍后)

【问题讨论】:

    标签: java ontology owl owl-api


    【解决方案1】:

    永远不需要添加实例来声明和使用类。

    例如:

    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);
    

    为了在保存本体时获得任何输出的实体,必须在本体中包含的一些公理中使用它。在这个例子中,这个公理就是类声明;它可以是子类公理或断言(在这种情况下,将创建一个实例)。

    【讨论】:

      【解决方案2】:

      如果我想创建一个建模元素,例如没有来自输入字符串的实例的类,我会执行以下操作:

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

      EntityType.CLASS 可以更改为其他元素,例如 EntityType.ObjectProperty。这就是我解决这个问题的方法,当我想添加实例时,我只需向本体管理器添加一个新的公理。

      【讨论】:

      • 谢谢!!!这基本上解决了我的问题。然后,我将创建的实体 as 和 OWLDeclarationAxiom 添加到 OWLOntologyManager 对象
      • 这对于@jana 的用例是否比更具体(我认为更易读)factory.getOWLClass(IRI.create(input))shown in the examples 有任何优势?
      • 我一般不知道,但是对于曼彻斯特语法,您需要指定类型。因此在那里有类型。
      • @JoshuaTaylor 的评论是正确的:两种方法都会产生相同的结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 2011-08-18
      • 1970-01-01
      • 2015-07-19
      • 2012-11-04
      • 1970-01-01
      相关资源
      最近更新 更多