问题标签 [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.
rdf - 如何检查类之间是否存在 OWLObjectPropertyExpression?
假设有两种类型的类,一种(A)由另一种(B)“isManagedBy”。下面的猫头鹰截图说明了这种情况。有多个 A 类型的类(由其他类“管理”)和 B 的多个类。实际上,A 类型和 B 类型的类 bot 之间也存在层次结构。
问题:给定任意类 A,获取类型 B 的所有类。
想法:遍历所有类型 B 的类。对于每个 B 类,使用 Reasoner 的 isSatisfiable() 方法检查给定的 A 是否具有类 B 的 ObjectProperty“isManagedBy”(直接或继承)。
不幸的是,推理器对所有类型 B 的类都返回可满足的结果。
问题:如何解决这个问题?
owl - 在 Protégé 中使用传递角色进行推理
我在 Protégé 中对传递角色进行推理时遇到问题。
我创建了一个简单的本体,上面写着:
“任何杆都是某些引擎的一部分。”
“任何引擎都是汽车的一部分。”
“PartOf 关系是传递的。”
我希望 Protégé 在 DL 度量中将这个 DL 识别为 S,并推断“任何杆都是某些汽车的一部分”,但它似乎只是忽略了传递性公理。问题是为什么。
(我使用了不同版本的 Protégé(4.3 和 5.0)和不同的推理器。我怀疑我没有设置一些重要的复选框选项。)
我附上我的本体:
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 一起使用都不会!
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 的结果?
relationship - 如何推断同名对象之间的sameAs关系
我想使用 RDF 推理推断具有相同属性值的对象之间的 owl:sameAs 关系。
IE
- object1 dc:title someTitle
- object2 dc:title someTitle
推断具有匹配标题的所有对象之间关系的代码是什么?
另外,当属性不同时我可以这样做吗?
IE
- object1 dc:title someTitle
- object2 rdf:title someTitle
问候
semantic-web - 用 SWRL 写一个数学表达式来计算概率分布
我是语义网规则语言的新手,我正在编写一些规则来计算离散和连续分布的概率。
我知道使用 SWRL 我可以做减法、加法、乘法和除法。但是数学函数的求幂、求和、计算呢?有没有办法在 SWRL 中做到这一点?
只是一个提出我的问题的例子:你知道,例如,对于三角分布,我们需要基本的数学微积分(减法和除法),但对于 Beta 分布,我们需要指数和 beta 函数的微积分。
有没有办法在 SWRL 中做到这一点?谢谢
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 的信息。
我的问题是:
- 我怎样才能得到连接a和b的推理机?
- 我认为 C 的创建不会起作用,因为它是对 Temp 的限制,由于这种限制,它永远不会被分配为类型。
还是我的方法完全错误?
编辑:
用一个更好的例子来阐明我的目标:
我有一个包含不同类型事件的本体。
我的目标是通过在推理器的帮助下形成一个描述这种关系的新个体(事件)来连接属于一起的某些个体(事件)。
例如:
- 我在本体中读到了一个描述“警报”(类型)的事件(个人)。
- 我读了一个事件(个人),它将“断电”(类型)描述到本体中。
这些个体目前完全没有关系。现在我想要一个推理器来创建一个类型为“PowerManipulation”的新事件(个人)。事实上,我想要一个类型为“PowerManipulation”的人,为每对(尚未连接)的人创建一个类型为“PowerOutage”和“Alarm”的人。这些新个体应该具有对导致其创建的个体的引用(属性)(“警报”和“断电”)。
推理前的本体:
推理后我希望本体看起来像什么
以前我使用耶拿规则和耶拿推理器来完成这项任务。但我想切换到标准的 OWL DL 推理器。
是否有可能在基本限制的情况下完成这项任务?还是我需要 SWRL 规则或 SPIN(请参阅下面的威廉姆斯回答)?
semantic-web - 为什么猫头鹰:限制推理在 Blazegraph 中不起作用?
在 Blazegraph 中使用以下 RDF(取自此答案):
以下 SPARQL 返回空白:
以下是 Blazegraph 命名空间配置(Blazegraph 从命令行作为 NanoSparqlServer 运行):
我错过了什么?
performance - 评估使用推理器的算法的性能
我开发了一种算法(java 代码),它可以在 OWL-DL 本体中的两个给定类之间找到特定路径(属性链)。这是本体
实际上,Pellet 推理器花费了太多时间来响应我的查询,大约 5-7 秒来检查一个类是否通过属性F
与一个类一对一相关,但是这个查询在我的算法中是重复的,如果我在类似的类上重新运行它,它的执行速度会更快(我认为这与内存模型或 RAM 内存缓存有关......)。但是第一次大约需要 4-5 分钟(取决于完成的检查次数)。D
r
这个瓶颈与本体和推理器本身有关:(如果我在没有推理器的情况下运行它,它会立即执行!)
问题:
1-我可以在不考虑推理时间的情况下评估性能吗?即类似:如果我们忽略推理器所花费的时间,它的执行是立即的!
2-在这种情况下有什么方法可以提高性能吗?
instance - 实例的闭包公理,以便推理器可以正确分类本体中的实例
我是一名地理学家,也是本体论领域的新人,试图从这两者中理解。因此,我创建了一个简单的本体,如下:
您可以在.owl file
此处找到使用非常简单的空间道路数据集(图 1)进行实例化的示例。
本体在没有和有实例的情况下是一致的,但是当我运行推理器时,Dangling_node 实例(连接到一个链接或弧的节点)没有正确分配给相关的子类,而只分配给 Node 超类。正确分配了intersection_node(连接到多个链接的节点)实例。
我猜根据开放世界假设,推理者认为该节点可能是另一个 Arc 的“is_extent_of”,但此处未提及。
我是否需要,或者我怎么可能拥有实例的闭包公理?我的本体实现的哪一部分是错误的?
编辑:
Dangling_node 的通用类公理如下: