问题标签 [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 - 关闭 PropertyShape 有什么影响?
在 SHACL 规范中,据我所知,没有什么禁止关闭 PropertyShape。
以下是来自SHACL Playground的默认示例,已纠正默认错误,因此数据有效。
形状:
数据(有效 - 无验证结果):
现在,当您关闭类似的sh:path schema:address
属性形状时schema:PersonShape
:
通过此更改,有验证结果:
sh:close的规范说:
[...] 一个名为 sh:close 的属性,可用于指定条件,即每个值节点仅具有通过 sh:property 为形状指定的属性形状显式枚举的那些属性的值。
很抱歉:我无法解释正在发生的事情以及应该发生的事情(如果两者不同)。
有人可以解释观察到/指定的行为吗?
谢谢!
shacl - 使用 sh:filterShape 而不是 sh:target?
我想知道是否有可能以更易读的方式表达以下代码。也许没有 SHACL-SPARQL。在这种情况下可以使用函数 sh:filterShape 吗?
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 链接)。此数据类型告诉系统使用属性中的附加信息来格式化值:
那么,开始一个具有类似用例的新本体,这是识别和格式化外部标识符的好蓝图,还是有更充分的解决方案?
sparql - SPARQLRule 未构造
我有一个带有 ash:SPARQLTarget
和 a的 Nodeshape sh:SPARQLRule
。我尝试将 Target 和 Rule 作为查询运行并且都提供结果,但是当我使用 Apache Jena SHACL 处理器执行 Shapes 时,它不会构造任何三元组。我做错什么了吗?我没主意了。这是我的节点形状:
正如我所提到的,当我将目标或规则作为单个查询执行时,我确实得到了结果,并且目标中的焦点节点确实像$this
规则中一样出现。IRIiep:isExternal
并iep:isLoadBearing
在之前的步骤中得到了推断。我错过了什么吗?
shacl - TopQuadrant Shacl 规则引擎迭代推理
Shacl API 规则引擎是否像 TopBraid Composer 一样支持 sh:order 来执行规则。
我在 TBC 中测试了规则排序,它迭代地进行,直到达到一个固定点。没有更多的规则可以执行。我怀疑它被认为是一次性的,但是规则被优先考虑,并且它们的结果可用于在同一遍中执行的下一条规则。
无论如何,不管它是如何实现的,我想知道它是 shacl 规则引擎的一个特性还是一个特定于 TopBraid 作曲家的实现。
以下线程暗示了我正在寻找的答案,但没有达到。
rdfs - 我所有的标签都去哪儿了?Topbraid 猫头鹰到 SHACL 转换
我正在尝试将我的本体从 OWL 转换为 SHACL。但是,SKOS 标签、preflabels、评论等没有被转换。至少,它们不会在生成的 ttl 文件中返回。现在,我将原始 TTL 文件加载到 topbraid 中,并使用 Model -> Convert OWL/RDFS To SHACL... -> standard settings 。这很好用:我所有的对象属性、数据属性、基数等都被巧妙地转换,但是,所有不是 SHACL 的东西都完全从生成的 TTL 文件中省略,包括我的预标签和注释。
我做错了什么:或者更好:如何将所有内容转换为 SHACL,但将 SKOS 的东西保留在那里?
感谢您的任何提示!
recursion - jena shacl 形状最大递归
对于递归形状,有没有办法限制 SHACL 验证器的 Jena api 中的递归量?例如下面的形状。
是否可以只验证“知道”属性 1 或 2 并让它通过更深的关系?
rdf - 是否可以用 SHACL 描述单例属性?
是否可以在 SHACL中描述单例属性?也就是说,不需要 afoaf:name
上的单个谓词,而是需要一个具有offoaf:Person
的唯一谓词。rdf:singletonPropertyOf
foaf:name
所以在
_:person1
有效但_:person2
不是。
rdf - SHACL 验证列表并检索受约束的属性路径
我正在根据 TopQuadrant 的这个示例进行一些测试,并使用Zazuko SHACL Playground。
我正在尝试针对期望属性为列表的形状验证数据,我的目标是检索无效属性的路径。
这是我使用的数据:
以及它被测试的形状:
这工作正常,但是如果我将ex:colors
成员的预期数据类型更改为xsd:float
,这是生成的验证报告:
我的问题是没有关于我的形状()上失败的属性的路径是什么的信息,只有用于描述列表sh:path ex:colors
的“子属性”( )的路径。sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first )
有没有办法检索这些信息?形状是否应该以不同的方式定义?