问题标签 [shacl]
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 - SHACL/ShEX 约束使属性建立层次结构(即树)
我对 SHACL 和 ShEx 知之甚少。
我一直在阅读它们并弄清楚我是否可以对属性创建约束以使其定义层次结构(即树状结构)。
我想我正在寻找的是一种方法来指定,对于给定的属性p
,
a)这可能发生(o1 != o2
):
b) 但这不能( s1 != s2
):
我猜 a) 我应该对 的基数使用某种约束p
,对吗?
不知道如何指定 b) 或者即使可以使用 SHACL 或 ShEX。我应该使用 OWL 吗?
graphdb - 无法使用 SHACL Sail 初始化 graphdb 存储库
- 免费设置当前的 graphdb(尝试使用 9.3.3 和 9.4.0)
- 在启用了 SHACL 验证的工作台中创建一个新存储库
- 导出到 ttl
- 将其设置为 graphdb 在启动时导入的 init 存储库
- 观察 graphdb 启动失败并显示消息
Only graphdb repositories are supported
当尝试使用准备好的数据库设置自动部署时,这让我们很痛苦。有什么建议可以解决吗?
java - 如何将推断的三元组输入(其他)SHACL 规则?
我最近接触了 SHACL,我真的很喜欢它。我对 SHACL 规则有疑问,我想知道你们是否可以帮助我。
我创建了这个小型本体,它是我正在研究的 GDPR 的更大本体的一部分。
有五个主要类:PersonalDataProcessing、DataSubject、LegalBasis、Consent 和 GiveConsent。并且,有四个(功能)对象属性:
- hasLegalBasis(域:PersonalDataProcessing,范围:LegalBasis)。
- hasAgent(域:GiveConsent,范围:DataSubject)
- hasPatient(域:GiveConsent,范围:Consent)
- objectOfConsent(域:Consent,范围:PersonalDataProcessing)
并且有一个名为“isLawful”并在 PersonalDataProcessing 上定义的数据类型(布尔)属性:每个 PersonalDataProcessing 都可以是合法的(isLawful=true)或不合法的(isLawful=false)。
我在 GiveConsent 类中创建了一个单独的“gc”。“gc”有一个代理“John”(他是一个 DataSubject)和一个病人“c”(这是一个同意)。同意“c”通过属性 objectOfConsent 连接到另一个个人“pdp”,这是一个 PersonalDataProcessing。
然后我有两个 SHACL 规则。其中一个有“sh:order 1”,所以它应该在另一个之后执行(默认 sh:order 等于 0);
上述第一条规则规定,如果有人同意 PersonalDataProcessing,则该同意是 PersonalDataProcessing 的法律依据。第二条规则(带有“sh:order 1 ;”)规定每个具有法律依据的 PersonalDataProcessing 都是合法的。
最后我写了一个Java文件来执行规则:
我写信给你是因为第一条规则通过上面的 Java 代码正确地创建了三重“pdp hasLegalBasis c”:
但是,在推断出此三元组后,第二条规则不会触发:isLawful 未设置为 true。
另一方面,如果我在本体中手动添加三重“pdp hasLegalBasis c”,两个规则都会触发:
我究竟做错了什么?你们中的任何人都可以帮助我吗?
非常感谢
owl - 我不能将 sh:lessThan 与 xsd:positiveInteger 一起使用
我有以下小本体,有两个类(“DataSubject”和“Minor”),一个属性从 DataSubject(s) 到 xsd:positiveInteger,还有一个个人(“John”,他是一个 DataSubject 并且有 -年龄等于 20)。
以下 SHACL 规则应将所有年龄低于 16 岁的 DataSubject 标记为 Minor。
然而,下面的 Java 代码将 John 推断为 Minor……但 John 不是,他 20 岁!当然规则是不正确的,特别是指令“sh:lessThan "16"^^xsd:positiveInteger ;"。
如何将数据类型属性与给定的常量进行比较?
提前致谢!
利维奥
owl - 使用 sh:maxExclusive 比较两个数据类型属性(的值)
连接到这个问题:
我不能将 sh:lessThan 与 xsd:positiveInteger 一起使用
事实上,我设法通过以下方式使我的示例工作:
但是,现在我想将“ontology:has-age”的值与常量进行比较,而不是与在同一个人上定义的另一个数据类型属性的值进行比较(并以 16 作为值):
正如你们中的许多人可能知道的那样,以下方法不起作用:
我真的在https://www.w3.org/TR/shacl和其他相关网页上进行了挖掘,但我不知道如何获取属性的值并通过 sh:maxExclusive 进行比较。
有人可以告诉我该怎么做吗?
非常感谢!利维奥
owl - 在 sh:lessThan 的参数中嵌入路径
连接到这个问题(及其以前的问题):
使用 sh:maxExclusive 比较两个数据类型属性(的值)
我创建了一个包含三个类的小型本体:DataSubject、MemberState 和 Minor。有两种数据类型属性:has-age 和 has-minimalage。前者是从 DataSubject(s) 到整数,后者是从 MemberState(s) 到整数。然后有一个对象属性 has-member-state 从 DataSubject(s) 到 MemberState(s)。
现在我们有以下个人:
我想写一个SHACL规则,说每个年龄小于其会员国最小年龄的DataSubject也是Minor类的个体。
根据我对其他问题的答复,我尝试了:
哪个不起作用:它将 John 分类为 Minor,但 20不小于 16。当然我尝试了许多其他变体,例如,“sh:lessThan[sh:node[sh:path (ontology:has-member-state ontology :has-minimalage)];];",其中许多可能没有任何意义,但它们都不起作用。
有人可以建议我如何在 sh:lessThan 的参数中嵌入路径吗?
如果我开始对所有这些问题感到恼火,我很抱歉 :-( 我是 SHACL 和 SPARQL 的新手,但我真的在尽我所能从网上找到的所有东西中学习它们。
谢谢利维奥
rdf - 用于子图验证的 SHACL 形状
我想使用 SHACL 验证子图中谓词的顺序。从理论上讲,我认为我必须对每个链接在一起的谓词使用 SHACL 形状,然后定义一个条件语句来检查第一个谓词是否存在,然后继续遍历图形以获取下一个谓词。
例如:
在此,我想检查谓词的顺序:-
foaf:知道->本体1:性别->本体1:物种->本体2:类别
我已经翻阅了大量的文档,但还没有找到一个例子。知道如何使用 SHACL 核心功能来做到这一点吗?甚至使用 SHACL-SPARQL?
rdf - SHACL 联合形状
我为以下用例构建了一个 SPARQL 查询:如果 IfcWallStandardCase 有一个属性“FireRating”,那么与之关联的门也应该有一个属性“FireRating”。
数据图
SPARQL 查询
我想为它构建一个 SHACL 形状。在 SHACL 高级功能中,最接近的选项是使用 sh:union。下面,是我的形状。
但是,它没有给我 SPARQL 查询给出的结果。我哪里错了?任何帮助,将不胜感激。
graphdb - 我可以检查形状图吗
我按照https://graphdb.ontotext.com/documentation/9.4/free/shacl-validation.html上的说明进行操作,并按文档说明工作。但是,一旦完成,我发现无法检查为我的存储库配置的形状图。
特殊图表<http://rdf4j.org/schema/rdf4j#SHACLShapeGraph>
无处可寻;它不会出现在“图表概览”屏幕中,无法通过 SPARQL 查询访问。