问题标签 [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.

0 投票
0 回答
35 浏览

shacl - 如何使用 SHACL 查找没有 rdf:type 的对象

我正在尝试编写一个 SHACL 形状,如果它找到未使用 rdf:type 键入的资源(例如由于拼写错误或意外遗漏),则会引发错误。但是,要针对该资源,出于明显的原因,我不能使用 rdf:type 。我想我可以使用 targetSubjectsOf,结合 oneOrMorePath 基本上说,“任何使用任何属性的东西,都必须以此节点形状为目标。” 我使用 skos:definition 是因为我确定我的数据图中存在包含该属性的术语,但另一个属性也应该可以工作。但是,我无法让它工作。我在测试集中使用的 :whatever 属性肯定应该返回我的数据错误(我做了一个简单的 minCount 属性形状),但它毫无问题地通过了。

有什么想法或替代方法吗?我考虑过使用 sparql Target,但更喜欢“shacl Native”解决方案。

0 投票
1 回答
21 浏览

shacl - 结合 sh:in 和 sh:pattern 在定义中查找占位符

我正在尝试制作一个属性形状,可以区分“真实”定义和定义的占位符作为 skos:definition 的值。我的输入倾向于在定义字段中包含诸如“”、“N/A”、“NA”、“None”等内容,这很好,除了我的 shacl 形状应该认识到这个定义是无效的。

有没有办法使上述结构工作,还是我完全走错了路?我承认使用某种正则表达式黑名单并不是最佳选择,但它应该已经捕获了 90% 的情况,这目前已经足够好了,并且可以随着时间的推移而扩展。

提前感谢任何提示或想法!

0 投票
1 回答
24 浏览

linked-data - 在 shacl 验证报告中同时显示自定义消息和默认消息

当使用 shacl Validator 验证我的形状时,我得到一个验证报告,其中包括我为 sh:message 输入的值。但是,默认消息有时包含我的自定义 sh:message 无法捕获的有用信息。有没有办法同时显示自定义消息(我的 sh:message 值)和默认消息(如果我没有为 sh:message 设置值,我会得到的消息)?

0 投票
0 回答
47 浏览

rdf - 包含和排除父类型的 SHACL 形状定义

我有几个涉及类限制的场景。他们中的大多数我都可以开始工作,但有几个我发现有点难以弄清楚。为简单起见,我将从我试图表达的父类型限制开始。

以下将是有效形状,因为它以 ex:Cls1 为目标,使用 ex:parent 指定父级,并且父级具有 ex:P_cls{1, 2, 3} 类型之一。(在所有这些情况下,targetClass 都是 ex:Cls1)。

这将是一个无效的形状,因为必须为父级定义 ex:Pcls{1,2,3} 类型:

这个是有效的,因为它包括 ex:Pcls{1,2,3} 之一:

第四个是无效的,因为只允许 ex:Pcls{1, 2, 3} 之一:

如果我可以接受不允许的类型列表(为了维护,我宁愿声明只允许 ex:P_cls{1, 2, 3})然后以下部分有效,因为它不包括第三次使用案子:

..我在其中列出了 sh:not 的详尽列表。如前所述,当模型发生变化时,这并不是最好的,我需要找到所有需要排除它的地方。

那么关于如何 1) 改进这种形状,或 2) 为未来添加到 rdf:type 列表中的任何想法?

非常感谢您的观看。

——斯科特

0 投票
0 回答
24 浏览

shacl - Shacl 规范错误或只是令人困惑,我错过了什么?

取自规范:

节点形状是形状图中的形状,它不是 以 sh:path 作为其谓词的三元组的主题。sh:NodeShape 的 SHACL 实例不能具有属性 sh:path 的值。

然而,当谈到采用形状列表的 Or Constraint 或 And Constraint 时,我们发现如下示例:

用下面的解释

以下示例说明了在形状中使用 sh:and 来指定某些焦点节点恰好具有一个 ex:property 值的条件。这是通过指定最小计数的单独命名形状(例如:SuperShape)和 另外指定最大计数的空白节点形状的结合来实现的。如此处所示,sh:and 可用于实现形状之间的特殊化机制。

如果它是 sh:path 的主题,这到底是一个空白节点形状,我错过了什么吗?

有人可以帮助我了解我在这里可能缺少什么吗?

0 投票
1 回答
51 浏览

rdf - 为什么此 SHACL 验证不能按预期工作?

这是我的 shacl.ttl:

这是data.ttl:

我想验证 John 至少将两个球涂成红色,并且给出的数据应该符合要求。但我收到一条错误消息:“Less than 2 values have shape _:22728aa9248d56603d8c20009b9d6742”。我的序列路径有问题吗?非常感谢你的帮助!

0 投票
1 回答
18 浏览

python - rdfLib 将单个反斜杠转换为多个反斜杠

我正在使用 rdfLib 以 trig 格式(基于海龟)序列化我的三元组,但由于某种原因,我的 sh:pattern 语句(正则表达式格式)中的反斜杠 () 加倍。我尝试将 sh:pattern 的值输入为原始字符串,并转义反斜杠,但它仍然在生成的 trig 文件中创建了太多反斜杠。

例子:

一旦序列化变为:

sh:pattern "^\\s|\\d{4}\\D"

在输入和最终的序列化之间有一些转换步骤,但这些转换都没有触及原始输入中的反斜杠,所以这让我责怪序列化。

有谁知道为什么 rdfLib 可能会这样做,以及是否有办法将其关闭?我可以想象 rdfLib 可能会看到一些字符串,并决定如果有任何反斜杠,我可能想转义它们(通常我想要),但由于输出实际上是反斜杠具有正则表达式的 shacl 形状的输入功能我不想逃避它们!

感谢您的任何提示!

0 投票
1 回答
15 浏览

shacl - 为什么 sh:NodeShape 没有 sh:name 和 sh:description 属性?

在阅读SHACL规范时,我注意到我们可以在 a 中添加一个sh:namesh:descriptionsh:PropertyShape

为目标中出现的属性提供人类可读的标签

这对房产来说真的很酷,但我有点困惑,为什么不是这样sh:NodeShape。为“类型”提供人类可读的名称和描述是否也有帮助?

0 投票
1 回答
69 浏览

sparql - 可以使用 SPARQL 实现 SHACL 吗?

我正在尝试找到一种在我的 AWS Neptune Graph 数据库中使用 SPARQL 实施 SHACL 验证的方法。有没有办法这样做?

0 投票
1 回答
40 浏览

sparql - Topbraid Composer 中 SPARQL 中的 SHACL sh:rule 和 sh:condition

示例本体有两个类(:MyClass:Value)和两个属性(:MyObjProp:MyDataProp)。

添加了一些实例。

:NodeShapeRule创建了一个带有sh:rule( )的 NodeShape :SPARQLRule_1。此规则创建新的三元组。使用sh:condition该规则应将其限制为目标的子集。

对于限制,定义了两个等效的 NodeShape。第一个约束使用 sh:property,另一个使用 sh:sparql。

在使用 Topbraid Composer 进行推理时,我收到了两种解决方案的不同结果。只有带有 sh:property 的解决方案才能提供预期的响应。拜托,有人可以解释一下这种行为吗?