【问题标题】:Infer non-trivial OWL superclasses (or subclasses) assertions using a Java reasoner使用 Java 推理器推断非平凡的 OWL 超类(或子类)断言
【发布时间】:2021-12-29 16:51:16
【问题描述】:

我想在 OWL 中表达以下 DL 断言

A ⊑ B
A ⊑ ∃R

意味着A 是B 的子概念,A 的所有实例都必须与R 有关系。

我用下面的 OWL 本体来表达它:

Prefix(:=<http://example.org/my-ontology#>)

Ontology(<http://example.org/my-ontology>
    Declaration(Class(:A))
    Declaration(Class(:B))

    Declaration(ObjectProperty(:R))

    SubClassOf(:A :B)
    SubClassOf(:A ObjectSomeValuesFrom(:R owl:Thing))
)

我正在使用 HermiT 推理器来检索:A 的所有超类,方式如下:

OWLOntology ontology = TestUtils.ontology;
OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
ConsoleProgressMonitor progressMonitor = new ConsoleProgressMonitor();
OWLReasonerConfiguration config = new SimpleConfiguration(progressMonitor);
OWLReasoner reasoner = reasonerFactory.createReasoner(ontology, config);
reasoner.precomputeInferences();

for (OWLClass owlClass : ontology.getClassesInSignature()) {
    if (owlClass.toStringID().contains("#A")) {
        System.out.println("Class=>" + owlClass.toStringID() + "\nSuperClass[");
        System.out.println("\t" + reasoner.getSuperClasses(owlClass, false));
        System.out.println("]");
    }
}

但这只是打印:

Class=>http://example.org/my-ontology#A
SuperClass[
    Nodeset[Node( <http://example.org/my-ontology#B> ), Node( owl:Thing )]
]

如何获取SubClassOf(:A ObjectSomeValuesFrom(:R owl:Thing))的信息?

附:我不能只列出本体中的包含断言,但我必须使用推理器(不一定是 HermiT)来推断它们。

【问题讨论】:

  • 你没有使用 HermiT。 StructuralReasonerFactory 类是一个 OWLAPI 类,它产生的推理器不进行推理。将其更改为 HermiT 的正确 ReasonerFactory。
  • @Ignazio 谢谢,但即使更改为 org.semanticweb.HermiT.Reasoner.ReasonerFactory 输出也不会改变。

标签: java owl owl-api description-logic hermit


【解决方案1】:

从本体得出的推论是无限的。例如,请参阅this paper

出于这个原因,推理器通常将推理限制在命名类。 \exists R 不是命名类,因此不会作为推理返回。

要获得所需的推理,您需要通过添加例如为\exists R 命名

C \equiv \exists R

然后推理器将能够推断出AC 的子类。

【讨论】:

  • 谢谢,但是我不能修改本体。
  • @user402843 你能创建一个导入原始本体的新本体吗?如果不添加定义,您将无法做出所需的推论。
猜你喜欢
  • 2018-11-22
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多