问题标签 [description-logic]
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.
owl - Protege 与 OWL 2 配置文件中的 DL 表现力
我一直在 Protege 中研究本体。
我从一个在 Protege 中被归类为“DL 表现力:SROIF(D) ”的高表现力开始。
如果我是正确的,这些字母表示 - 按顺序 - 使用:传递性、角色链、名词性、InverseOf、功能性,而 D 代表数据类型。不幸的是,这种表达性应该是 NExpTime 完整的,我需要一些东西计算量较小。
因此,我尝试重新构造我的本体,以保持在 OWL2 EL 配置文件中(应该存在 PTime 决策程序)。现在我有了“DL 表达性:SRO(D) ”,因为我正在使用传递性、角色链(没有递归定义)和标称,但没有反向或功能对象属性。
我的问题是:
它真的是 OWL2 EL Profile 中的 DL Expressivity SRO(D) 吗?
我不清楚 Protege 中给出的表达能力与 OWL2 建议之间的对应关系。此外,它似乎与我在这里得到的信息相冲突:http ://www.cs.man.ac.uk/~ezolin/dl/ 。
根据 OWL2 EL Profile,在 SubObjectPropertyOf 语句中应该允许角色链。而且我正在使用 a o b -> c 形式的简单角色链(没有 a o b -> b 或 a o b -> a 形式)。但根据常识,应该避免角色链。
我广泛阅读了关于 OWL、OWL2、描述逻辑、推理器以及推理器的一些基准和评估等内容,但我找不到任何明确解开这方面的“最终”资源。
第二个问题:
OWL2 EL Profile 是否还有任何其他“变体”(例如,可以使用的运算符组合略有不同)仍然是 PTime?我在哪里可以找到这些研究?
double - 如何在 Protégé / OWL / DL 中使用双精度值作为类表达式(语法)?
我想在 Protégé 中对类表达式语法使用双精度值,但我找不到任何示例。所有人都使用整数值,而不是双精度值。例如: http: //protegeproject.github.io/protege/class-expression-syntax/
例如,我想用米来表示一个人的身高:
- hasHeight 值 1.89
- hasHeight min 1.70
我怎样才能做到这一点?
当前有效的方法(根据语法):“hasHeight some xsd:double”推断在属性 hasHeight 中具有 xsd:double 值的所有实例都是实例。但是,我想将其限制在特定的值范围内。例如:在 1.80 和 1.70 之间。我怎样才能做到这一点?
我认为这相当于来自 DL Query 选项卡的查询,在该选项卡中我可以使用“hasHeight some xsd:double[<=1.80]”查询相关实例,但这在 Protégé 的类表达式编辑器中是不允许的。为什么?
提前致谢!
owl - 如何表示具有相同值的不同类的实例是来自另一个类的实例?
我有四个类:A、B、C 和 S。A 类推断出实例 i1 和 i2,它们基于数值条件(在 Equivalent To 中)。B 类具有基于数值条件(等效于)的推断实例 i3 和 i4。A 和 B 是 S 的子类。
每个实例都有一个 xsd:dateTime 值。
我想建模 A 和 B 中具有相等 xsd:dateTime 值的每个实例也是来自类 C 的实例(推断)。如何使用 Protege 建模这样的表达式?
提前致谢。
java - 为什么不能直接在owlapi中使用merge来合并ABox和TBox?
owlapi 为我们提供了一个类合并,它允许我们从多个文件/源加载本体,然后将它们合并在一起。现在我将我的本体分成两个不相交的部分,即一个用于 TBox 公理,另一个用于 ABox 断言。所以我只是使用合并作为以下代码,
但是我发现合并后的本体o中只包含了ABox中的类断言,也就是说没有包含所有的角色断言。我做了很多尝试,最后我通过将属性的类型断言添加到我的 ABox 文件来解决问题,例如,<http://semantics.crl.ibm.com/univ-bench-dl.owl#takesCourse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
这真的很奇怪,因为这样的断言已经包含在 TBox 文件中,并且我已经将 TBox 和 ABox 合并到了merge。那么为什么我必须再次手动添加它们呢?这是owlapi的设计问题吗?或者我有没有更好和更常见的方法来解决这个问题?
PS:
我的ABox文件,即test.nt,比较简单,只包含几个三元组,没有别的。我也没有在我的 ABox 中导入 TBox,因为它只包含三元组。
例如,原始 test.nt 的内容可以是:
第二个三元组不能被识别为对象属性断言。通过向 test.nt 添加另一个三元组声明 takeCourse 是一个对象属性,然后可以识别该对象属性。
但是,TBox 中已经有一个声明,声明 takeCourse 是一个对象属性,而不是其他任何东西。那么既然我已经将 TBox 与我的 ABox 合并了,为什么还要将它再次添加到 ABox 中呢?
owl - 关于描述逻辑和 OWL 的澄清请求
我有两个主要问题:
1/ 如果我们在学术手稿(例如论文)中谈论 OWL 2 语义:我们是否包括此 W3C 官方页面中提供的描述,其中包含多个解释函数
或者
大多数描述逻辑和 OWL 手稿中提供的那个?其中仅包含一个解释功能(论文和论文)???
2/ 如果我们在学术手稿(例如论文)中谈论 OWL 2 标准推理任务:
除了类之外,我们还讨论对象和数据属性推理任务(例如,包含、可满足性......):因为大多数学术手稿只讨论 OWL 2 中的类推理任务;
感谢您告诉我,在这两个问题中,哪一个更正确和更正式。
owl - Protégé 推理器不推断子类
我定义了一个小的本体,如下图所示:
我创建了一个个人 forDataset
和一个 for Algorithm
。我预计reasoner
会推断Algorithm
个人为Linear_Least_Regression
,但这并没有发生。
这是Dataset
个人的定义。可以看出,个人满足Dataset
了Linear_Least_Regression
此外,如果我添加个人Linear_Least_Regression
的类型Algorithm
,推理者不会抱怨。
我也试图Linear_Least_Regression
用 a 来获得结果,DL Query
但这也没有奏效。
在为我的本体建模时我错过了什么还是问题出在推理机上?我尝试了以下两个推理:FaCT++ 1.6.5
和HermiT 1.3.8.413
Protégé 5
logic - 为什么 n 元关系使逻辑语言不可判定?
通常,知识表示语言(如描述逻辑、OWL 等)仅提供二进制关系,以保持可判定性。但我不明白为什么提供三元关系会使语言无法确定。
我想要一些参考来解释这一点。我没有找到任何关于这个主题的有趣参考。
prolog - DL 推理器和 Prolog 有什么区别?
我正在考虑在本体中进行推理。
DL 推理器(如 Hermit、Pellet 等)和 Prolog 之间的推理能力有什么区别?
我的意思是,让我们假设我有一个包含本体(一般公理)和事实的知识库。我可以用 Prolog 从中推断出什么,我可以用 DL 推理器推断出什么?
如果您也可以提供参考,那将会很有趣。
此致
ontology - 如何从描述逻辑知识库中提取/构建领域模型
希望我的问题不是微不足道的或已经在其他地方得到回答。
问题描述 假设我们有一个代表软件架构
的 DL 知识库K mySys = (T sys , A mySys ) 。K mySys知识对软件组件(例如,API、存储、DB、服务器等)及其通信(例如,协议、授权、权限、数据流等)进行建模。术语部分 T sys在几个可能的模型之间共享,断言部分 A mySys是构成我的特定软件的资源的实例化。
现在,我们还假设我们有一个 DL“领域知识” K d = (Td , A d )包含特定领域的概念和角色定义,以及可能的个体。这种“领域知识”可以被认为是我们想要与我们的软件模型结合以起草某种报告的额外知识:例如,它可能包含与安全性、访问控制、密码学相关的概念。K mySys
中的一些知识与K d “相交” ,而另一些则不相交。相交的知识与领域建模相关,其余的不相关,可以丢弃。
问题
是否有任何程序:
- 使用来自K mySys的个体,使用从T d中的定义推断出的断言创建一个新的本体
。
- 排除与域 d 无关的所有信息,即K mySys中不属于T d中任何概念的所有个人?
- 包括来自T d的所有信息,以便最终的本体是原始模型的一种特定于领域的模型?
简而言之:如何从知识K mySys中实例化现有个人的领域知识K d?
我已经在谷歌上广泛搜索了关于这个问题的论文,并找到了关于本体合并、映射、匹配、投影等等的结果……但在我看来,问题的表述与我的情况不同. 这个问题隐约类似于合并,只是我想保留领域知识并丢弃不相关的系统知识。
我有点困惑......
这是投影问题吗?
这是一个合并问题吗?
有人可以指点我相关的研究吗?
owl - 如何创建关于个人的约束(Protégé - OWL)
我正在 Protégé 5.5.0 中创建一个本体。
我有两个班级:“人”和“公司”。它们可以通过以下属性关联:
- 雇用(isEmployedBy 的倒数);
- 管理(isManagedBy 的逆);
- 赞助商(与 isSponsoredBy 相反)。
这些类描述如下:
人相当于:
/li>公司相当于:
/li>
我想描述一下,如果有一家公司(c)雇用了人(b),公司(c)不能赞助人(b),尽管它可以赞助人(c)没有受雇于公司(c) . 由于它是与个人相关的规则,而不是与类相关的规则,我想知道是否可以将其描述为公理(通过示例),或者我是否必须使用 SWRL。