问题标签 [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 回答
40 浏览

rdf - 关闭 PropertyShape 有什么影响?

在 SHACL 规范中,据我所知,没有什么禁止关闭 PropertyShape。

以下是来自SHACL Playground的默认示例,已纠正默认错误,因此数据有效。

形状:

数据(有效 - 无验证结果):

现在,当您关闭类似的sh:path schema:address属性形状时schema:PersonShape

通过此更改,有验证结果:

sh:close的规范说:

[...] 一个名为 sh:close 的属性,可用于指定条件,即每个值节点仅具有通过 sh:property 为形状指定的属性形状显式枚举的那些属性的值。

很抱歉:我无法解释正在发生的事情以及应该发生的事情(如果两者不同)。

有人可以解释观察到/指定的行为吗?

谢谢!

0 投票
0 回答
54 浏览

shacl - 使用 sh:filterShape 而不是 sh:target?

我想知道是否有可能以更易读的方式表达以下代码。也许没有 SHACL-SPARQL。在这种情况下可以使用函数 sh:filterShape 吗?

0 投票
1 回答
208 浏览

rdf - 指定属性数据类型——使用 SHACL、rdfs:range 还是自定义属性?

我有一个像下面这样的本体,带有类和文字:

在引入新属性时,我想确保属性使用特定的“数据类型”(类似于:https ://www.wikidata.org/wiki/Help:Data_type ),以便用户界面可以显示正确的类型条目或显示格式:对象的 AutoComplete、literal_integer 的 Number、literal_coordinate 的 Map 等等。

我的理解是 rdfs:range (或不那么严格的“schema:rangeIncludes”)可用于对三元语句的对象位置中的预期值进行广义的理解。

此外,sh:datatype、sh:nodeKind 和 sh:class 类型的 SHACL 形状约束可以约束预期值(https://www.w3.org/TR/shacl/#core-components-value-type)。

问题

哪种方法可以战略性地以全局方式指定每个属性的预期 DataType?对于此用例,“范围”似乎过于开放,无法依赖,我不确定 SHACL 是否适用于此类“全局信息”,或者它是否主要处理图形子集的验证?与更复杂的对象/文字层次结构相比,似乎 Wikibase/Wikidata 使用“平面数据类型设置”:

理想情况下,该解决方案还应考虑围绕数据类型的特定元数据的概念,例如“外部标识符”(有关更多信息,请参见 Wikidata 链接)。此数据类型告诉系统使用属性中的附加信息来格式化值:

那么,开始一个具有类似用例的新本体,这是识别和格式化外部标识符的好蓝图,还是有更充分的解决方案?

0 投票
1 回答
58 浏览

sparql - SPARQLRule 未构造

我有一个带有 ash:SPARQLTarget和 a的 Nodeshape sh:SPARQLRule。我尝试将 Target 和 Rule 作为查询运行并且都提供结果,但是当我使用 Apache Jena SHACL 处理器执行 Shapes 时,它不会构造任何三元组。我做错什么了吗?我没主意了。这是我的节点形状:

正如我所提到的,当我将目标或规则作为单个查询执行时,我确实得到了结果,并且目标中的焦点节点确实像$this规则中一样出现。IRIiep:isExternaliep:isLoadBearing在之前的步骤中得到了推断。我错过了什么吗?

0 投票
1 回答
65 浏览

shacl - TopQuadrant Shacl 规则引擎迭代推理

Shacl API 规则引擎是否像 TopBraid Composer 一样支持 sh:order 来执行规则。

我在 TBC 中测试了规则排序,它迭代地进行,直到达到一个固定点。没有更多的规则可以执行。我怀疑它被认为是一次性的,但是规则被优先考虑,并且它们的结果可用于在同一遍中执行的下一条规则。

无论如何,不​​管它是如何实现的,我想知道它是 shacl 规则引擎的一个特性还是一个特定于 TopBraid 作曲家的实现。

以下线程暗示了我正在寻找的答案,但没有达到。

如何将推断的三元组输入(其他)SHACL 规则?

0 投票
1 回答
49 浏览

rdfs - 我所有的标签都去哪儿了?Topbraid 猫头鹰到 SHACL 转换

我正在尝试将我的本体从 OWL 转换为 SHACL。但是,SKOS 标签、preflabels、评论等没有被转换。至少,它们不会在生成的 ttl 文件中返回。现在,我将原始 TTL 文件加载到 topbraid 中,并使用 Model -> Convert OWL/RDFS To SHACL... -> standard settings 。这很好用:我所有的对象属性、数据属性、基数等都被巧妙地转换,但是,所有不是 SHACL 的东西都完全从生成的 TTL 文件中省略,包括我的预标签和注释。

我做错了什么:或者更好:如何将所有内容转换为 SHACL,但将 SKOS 的东西保留在那里?

感谢您的任何提示!

0 投票
0 回答
22 浏览

recursion - jena shacl 形状最大递归

对于递归形状,有没有办法限制 SHACL 验证器的 Jena api 中的递归量?例如下面的形状。

是否可以只验证“知道”属性 1 或 2 并让它通过更深的关系?

0 投票
0 回答
56 浏览

rdf - 是否可以用 SHACL 描述单例属性?

是否可以在 SHACL中描述单例属性?也就是说,不需要 afoaf:name上的单个谓词,而是需要一个具有offoaf:Person的唯一谓词。rdf:singletonPropertyOffoaf:name

所以在

_:person1有效但_:person2不是。

0 投票
0 回答
69 浏览

java - 为什么 SPARQLTarget 不适用于 Apache Jena?

我无法使用 Apache Jena 创建 NodeShape。我想定义一个针对属于 owl:Class 的所有命名个体的形状(因此不包括空白节点)。例如,这种形状有助于评估一个本体的所有类别是否至少有一个标签。

我定义了这个形状

并且,按照此处提供的说明,我编写了以下代码来评估DUL 本体上的形状。

方法 test() 的执行产生以下结果:

请注意,本体中定义的 6 个类没有标签(查询 q 打印它们),因此本体不符合形状。没有加载任何形状,因此 DUL 结果符合形状。

这里出了点问题。是因为形状还是代码?

PS:我正在使用 apache-jena 4.0.0

0 投票
0 回答
45 浏览

rdf - SHACL 验证列表并检索受约束的属性路径

我正在根据 TopQuadrant 的这个示例进行一些测试,并使用Zazuko SHACL Playground

我正在尝试针对期望属性为列表的形状验证数据,我的目标是检索无效属性的路径。

这是我使用的数据:

以及它被测试的形状:

这工作正常,但是如果我将ex:colors成员的预期数据类型更改为xsd:float,这是生成的验证报告:

我的问题是没有关于我的形状()上失败的属性的路径是什么的信息,只有用于描述列表sh:path ex:colors的“子属性”( )的路径。sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first )

有没有办法检索这些信息?形状是否应该以不同的方式定义?