问题标签 [reasoning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
361 浏览

rdf - 如何检查类之间是否存在 OWLObjectPropertyExpression?

假设有两种类型的类,一种(A)由另一种(B)“isManagedBy”。下面的猫头鹰截图说明了这种情况。有多个 A 类型的类(由其他类“管理”)和 B 的多个类。实际上,A 类型和 B 类型的类 bot 之间也存在层次结构。

问题:给定任意类 A,获取类型 B 的所有类。

想法:遍历所有类型 B 的类。对于每个 B 类,使用 Reasoner 的 isSatisfiable() 方法检查给定的 A 是否具有类 B 的 ObjectProperty“isManagedBy”(直接或继承)。

不幸的是,推理器对所有类型 B 的类都返回可满足的结果。

问题:如何解决这个问题?

0 投票
1 回答
638 浏览

owl - 在 Protégé 中使用传递角色进行推理

我在 Protégé 中对传递角色进行推理时遇到问题。

我创建了一个简单的本体,上面写着:

“任何杆都是某些引擎的一部分。”

“任何引擎都是汽车的一部分。”

“PartOf 关系是传递的。”

我希望 Protégé 在 DL 度量中将这个 DL 识别为 S,并推断“任何杆都是某些汽车的一部分”,但它似乎只是忽略了传递性公理。问题是为什么。

(我使用了不同版本的 Protégé(4.3 和 5.0)和不同的推理器。我怀疑我没有设置一些重要的复选框选项。)

我附上我的本体:

0 投票
1 回答
254 浏览

jena - OWL 属性域和范围继承语义

实际上,除了类分类成员之间的限制继承之外,当存在 subsummption 时,我迷失了域和范围语义。请看以下案例。

让我们考虑一下

那么,我们能不能推断出

让我们看看hasCar (x, y)x 是什么

从 (1):driver(x) 从 (2):human(x)

那么:无论如何x,如果hasCar(x, y)=> driver (x)=>

第一个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?


让我们考虑一下

以类似的方式,我们可以推断

第二个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?


让我们考虑一下

那么,我们可以推断

第三个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?

更新

将 Jena 与规范一起使用OntModelSpec.OWL_DL_MEM_RULE_INF会产生我预期的结果!但是,将 Jena 与 Pellet 一起使用不会,Protege 与 Hermit 或 Pellet 一起使用都不会!

0 投票
1 回答
821 浏览

java - 耶拿;属性的域和范围因所选的 Reasoner 而异

使用 Jena,我正在尝试获取属性的域和范围。

让我们考虑以下本体

我们可以看到,A1 是 P 的域,B1 是它的范围。根据 OWL 语义,我们可以推断 A 也是 P 的域,B 也是它的范围,请参见此处

但是,将 Jena 与推理器一起使用并不总是给出预期的行为。我们区分两种情况,第一种是使用 Pellet reasoner,第二种是使用 OWL_DL_MEM_RULE_INF

代码

使用 Pellet:这将提供以下输出:

使用 OWL_DL_MEM_RULE_INF: 这给出以下输出:

问题:

1-为什么会发生这种差异?

2-正确的结论是什么?

3- 有没有办法强制 Pellet 给出类似于 OWL_DL_MEM_RULE_INF 的结果?

0 投票
2 回答
657 浏览

relationship - 如何推断同名对象之间的sameAs关系

我想使用 RDF 推理推断具有相同属性值的对象之间的 owl:sameAs 关系。

IE

  • object1 dc:title someTitle
  • object2 dc:title someTitle

推断具有匹配标题的所有对象之间关系的代码是什么?

另外,当属性不同时我可以这样做吗?

IE

  • object1 dc:title someTitle
  • object2 rdf:title someTitle

问候

0 投票
1 回答
280 浏览

semantic-web - 用 SWRL 写一个数学表达式来计算概率分布

我是语义网规则语言的新手,我正在编写一些规则来计算离散和连续分布的概率。

我知道使用 SWRL 我可以做减法、加法、乘法和除法。但是数学函数的求幂、求和、计算呢?有没有办法在 SWRL 中做到这一点?

只是一个提出我的问题的例子:你知道,例如,对于三角分布,我们需要基本的数学微积分(减法和除法),但对于 Beta 分布,我们需要指数和 beta 函数的微积分。

有没有办法在 SWRL 中做到这一点?谢谢

0 投票
1 回答
239 浏览

semantic-web - 使用 OWL DL 推理器创建和连接个人

我有一个包含不同类型事件的本体。因此我有三个类:A、B、C 和一个辅助类 Temp。

我希望推理器为找到的每一对个体 a (rdf:typeOf A) 和 b (rdf:typeOf B) 创建一个新个体作为 C 的子类。这个新的个人应该包含关于 a 和 b 的信息。

过去我使用带有自己的规则文件的耶拿推理器来获得这个结果,但现在我想切换到标准的 OWL DL 推理器。

我最初的想法是链接 a 和 b,例如:

并且广告给出了类型 Temp,对 Temp 有以下限制:

现在我想创建一个 C 类型的新个体,但对 Temp 有限制:

通过这个新的个人,我可以访问 a 和 b 的信息。

我的问题是:

  1. 我怎样才能得到连接a和b的推理机?
  2. 我认为 C 的创建不会起作用,因为它是对 Temp 的限制,由于这种限制,它永远不会被分配为类型。

还是我的方法完全错误?

编辑:

用一个更好的例子来阐明我的目标:

我有一个包含不同类型事件的本体。

我的目标是通过在推理器的帮助下形成一个描述这种关系的新个体(事件)来连接属于一起的某些个体(事件)。

例如:

  1. 我在本体中读到了一个描述“警报”(类型)的事件(个人)。
  2. 我读了一个事件(个人),它将“断电”(类型)描述到本体中。

这些个体目前完全没有关系。现在我想要一个推理器来创建一个类型为“PowerManipulation”的新事件(个人)。事实上,我想要一个类型为“PowerManipulation”的人,为每对(尚未连接)的人创建一个类型为“PowerOutage”和“Alarm”的人。这些新个体应该具有对导致其创建的个体的引用(属性)(“警报”和“断电”)。

推理前的本体:

推理后我希望本体看起来像什么

以前我使用耶拿规则和耶拿推理器来完成这项任务。但我想切换到标准的 OWL DL 推理器。

是否有可能在基本限制的情况下完成这项任务?还是我需要 SWRL 规则或 SPIN(请参阅下面的威廉姆斯回答)?

0 投票
3 回答
815 浏览

semantic-web - 为什么猫头鹰:限制推理在 Blazegraph 中不起作用?

在 Blazegraph 中使用以下 RDF(取自此答案):

以下 SPARQL 返回空白:

以下是 Blazegraph 命名空间配置(Blazegraph 从命令行作为 NanoSparqlServer 运行):

我错过了什么?

0 投票
1 回答
106 浏览

performance - 评估使用推理器的算法的性能

我开发了一种算法(java 代码),它可以在 OWL-DL 本体中的两个给定类之间找到特定路径(属性链)。这是本体

实际上,Pellet 推理器花费了太多时间来响应我的查询,大约 5-7 秒来检查一个类是否通过属性F与一个类一对一相关,但是这个查询在我的算法中是重复的,如果我在类似的类上重新运行它,它的执行速度会更快(我认为这与内存模型或 RAM 内存缓存有关......)。但是第一次大约需要 4-5 分钟(取决于完成的检查次数)。Dr

这个瓶颈与本体和推理器本身有关:(如果我在没有推理器的情况下运行它,它会立即执行!)

问题:

1-我可以在不考虑推理时间的情况下评估性能吗?即类似:如果我们忽略推理器所花费的时间,它的执行是立即的!

2-在这种情况下有什么方法可以提高性能吗?

0 投票
1 回答
794 浏览

instance - 实例的闭包公理,以便推理器可以正确分类本体中的实例

我是一名地理学家,也是本体论领域的新人,试图从这两者中理解。因此,我创建了一个简单的本体,如下:

您可以在.owl file 此处找到使用非常简单的空间道路数据集(图 1)进行实例化的示例。在此处输入图像描述

本体在没有和有实例的情况下是一致的,但是当我运行推理器时,Dangling_node 实例(连接到一个链接或弧的节点)没有正确分配给相关的子类,而只分配给 Node 超类。正确分配了intersection_node(连接到多个链接的节点)实例。

我猜根据开放世界假设,推理者认为该节点可能是另一个 Arc 的“is_extent_of”,但此处未提及。

我是否需要,或者我怎么可能拥有实例的闭包公理?我的本体实现的哪一部分是错误的?

编辑:

Dangling_node 的通用类公理如下: