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

使用Jena的基本owl推理

莘昊
2023-03-14

考虑一个具有以下公理(OWL:class C1)和(OWL:class P)的本体,一个对象属性(RDFS:domain observes C1)(RDFS:range observes P)以及一个个体(RDF:type P P)

然后,通过创建具有限制(观察C2 p)的类C2(RDFS:subclassof C2 C1)来限制类C1

现在,当我创建一个新的个体(rdf:type x owl:thing)(观察x p),然后推理器推断出(rdf:type x C1)。然而,个体x的定义似乎更接近于C2,那么推理者是否不应该推断x是C2型的呢?

请救命!

我正在试验使用Jena框架。

共有1个答案

白淇
2023-03-14

没有发生这种情况的原因是您使用子类创建了限制,这意味着您创建了一个必要条件(但不是充分条件)。换句话说,你对推理者说过这样的话:

“如果一个个体属于C2类型,那么它必须有一个属性'Observes'”

但你没有反过来说:

 类似资料:
  • 我已经使用OWL API4.1.3加载了我的本体,它并不大。由于需要使用推断信息,我还使用Hermit1.3.8.413库进行了推理。下面的代码显示了我是如何完成的。 它不会抛出任何错误,但它需要将推断出的本体存储在一个新文件中。事实上,即使在2天后,它也没有完成工作。我的IDE是eclipse EE,我为运行这个应用程序提供了6到12 GB的内存。我找不到任何问题与我的代码或我的本体。

  • 我想我仍然对OWL公理有一个基本的误解:(。 下面是我创建的一个小测试本体论: 当我在Protege中运行hermitreasoner时,我得到了的预期结果,即它是的成员。但是,就成为的成员而言,我对没有同样的感受。 我怀疑这与开放世界的假设有关,并且有可能可能还有另一个断言。有几个问题: 我诊断的问题正确吗? 我能得到一个例子,说明我如何让我的目标隐士推理是的成员,而不显式地做出断言吗? 谢啦

  • 如何用推理器推断给定数据/对象属性的OWL域/范围? 例如,我有两个类、和一个数据属性。我希望这些类是的唯一域: 当我使用HermiT reasoner推断域时,我得到了类,而不是或: 我可以通过使用owl-api读取的来手动提取域,从而获得和类。但是我将无法获得其他可推断的类(例如,有一个等效的类)。 所以我想用推理机来推断结果,比如: 推理器:隐士、fact++、... SQWRL规则引擎:D

  • 我试着用protage软件打开它。会打开的。但是,里面没有类可以看到。为了在Protage中查看我生成的本体,我需要在这段代码中更改哪些内容?

  • 我有一个包含不同类型事件的本体论。因此我有三个类:A、B、C和一个helper类Temp。 我希望推理器为每找到一对个体a(RDF:TypeOf a)和b(RDF:TypeOf b)创建一个新个体作为C的子类。这个新个体应该包含关于a和B的信息。 在过去,我使用一个带有自己规则文件的jena推理器来得到这个结果,但现在我想切换到一个标准的OWL DL推理器。 和ad为a提供Temp类型,对Temp