当前位置: 首页 > 知识库问答 >
问题:

只检索根类/没有断言父类子类的类

曾光誉
2023-03-14

有没有一种简单的方法可以从OWLAPI中的OWL本体中只检索根类?这里我指的是没有断言父类的命名类。增加了复杂性,尝试不使用reasoner,因为本体是巨大的,并且reasoner没有在足够快的时间内完成(通常)。一如既往的感谢!

共有1个答案

子车才捷
2023-03-14

实际上,使用推理器会使任务变得很琐碎,因为唯一没有父级的命名类是owl:thing

开玩笑的是,您需要获取本体签名中的所有类,并确保每一个类都不作为子类出现在子类公理中(或者,如果出现了,则另一端的类是owl:thing

代码如下所示:

    OWLDataFactory df=OWLManager.getOWLDataFactory();
    OWLClass thing=df.getOWLThing();
    OWLOntology o = ...
    o.classesInSignature()
                   // all asserted superclasses
        .filter(c->o.subClassAxiomsForSubClass(c)
                               // skip owl:Thing 
                    .filter(s->!thing.equals(s.getSuperClass()))
                    // only keep the ones with no superclass
                    .count()==0)
        .forEach(System.out::println);

此示例打印出这些类的IRI。

 类似资料:
  • 编辑:OK,在typescript规范中有详细说明:类型断言

  • 我想知道如果为某个参数创建一个带有空setter方法的父类,然后创建几个扩展该类的类,但不是所有的类都有该参数,会发生什么。在参数存在的类中调用set方法时,它会设置param。在参数不存在的类中,不会发生任何事情,例如: 因此,如果我们创建类A,将其上转换为Pak,并尝试,属性将被设置。 如果我们对类B也这样做,尝试什么都不会发生。 有人能解释一下“引擎盖下”发生了什么吗?我希望得到一个例外,因

  • 我想基于当前类别及其父类别显示内容。为此,我需要知道当前类别是否是特定父类别的子类别。 例如,以下是我的类别: 汽车 跑车 意大利跑车 肮脏的 现在,我想在类别树下的每个类别存档中显示内容。例如,汽车、跑车和意大利跑车。 对于第一个类别,我可以使用WooCommerce的条件标记: 但是没有。所以我不能检查,如果分类“意大利跑车”是“汽车”的孩子。 有办法吗?

  • 7.10. 类型断言 类型断言是一个使用在接口值上的操作。语法上它看起来像x.(T)被称为断言类型,这里x表示一个接口的类型和T表示一个类型。一个类型断言检查它操作对象的动态类型是否和断言的类型匹配。 这里有两种可能。第一种,如果断言的类型T是一个具体类型,然后类型断言检查x的动态类型是否和T相同。如果这个检查成功了,类型断言的结果是x的动态值,当然它的类型是T。换句话说,具体类型的类型断言从它的

  • 问题内容: 得知子类的类变量无法访问父类的类变量而没有特别指出父类的名称,我感到很惊讶: 为什么在定义By时我必须引用Ax,而不仅仅是x?这与我对实例变量的直觉是相反的,并且因为在定义B之后我可以引用Bx。 问题答案: 在Python中,在创建类之前,将在其自己的名称空间中执行类的主体(此后,该名称空间的成员将成为该类的成员)。因此,当解释器达到y = x + 1时,此时B类尚不存在,因此没有父类

  • 问题内容: 那么是否可以仅针对最特定的类获取属性的字典/列表?到目前为止,我正在使用 但这也将给我提供超类中定义的服装。有什么办法可以避免这种情况? 问题答案: 摘自python文档 类具有由字典对象实现的名称空间。类属性引用将转换为此字典中的查找,例如Cx被转换为C . dict [“ x”](尽管特别是对于新式类,有许多允许使用其他方式定位属性的钩子)。如果找不到属性名称,则在基类中继续搜索属