问题标签 [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.
semantic-web - 安装新插件到 Protégé
我希望为 Protégé 安装一个新插件,该插件未在默认Protégé 插件库中列出。
有没有人有这样做的经验,并且可以指出我正确的方向?我要安装的插件是SHACL4P。如果有人知道我应该查看的 Protégé 的任何其他 SHACL 插件,我也很乐意接受任何建议。
sparql - 如何创建一个类作为具有定义类型的 RDF 语句的类的等效项?
我有三个类,我们称它们为:A,:B还有:C一个 property :p。
每个语句X: :p :Y都应该成为:A, when:X a :B和:Y a :C
目前我更喜欢使用 OWL 的解决方案,但也可以使用 SPARQL 和/或 SHACL。
constraints - OWL 财产限制与 SHACL
如果在OWL Property Restrictions和SHACL之间进行选择,是否还有理由再选择 OWL 方法?
特别是关于基数约束,我想知道是否认为 SHACL 会取代 OWL。根据我的随意检查,语法看起来很相似。
我可能错过了 OWL 基数约束的目的。作为本体的一部分,它们应该促进推理(与验证不同的关注点)。但是基数约束如何促进推理?
java - SHACL with Jena,如何从形状中获取 SPARQL CONSTRUCT 后的模型?
我有这个数据文件:
这个形状文件:
我的代码目前是:
如何获得包含新三元组的模型(例如:John a ex:father)?
rdf - 我可以用语义网表达某人必须做的事情(情态动词)吗?
https://en.wikipedia.org/wiki/Modal_verb
无论是任何形式的 rdf rdfs owl shacl 等...
某人做某事 vs 某人“必须”做某事
山姆去上学。山姆“必须”去上学。
另一种情况是有人必须做,但做不重要的事情。
?s ?p ?subject:Sam ?predict:shouldWork
jena - 对新实例执行 SHACL 规则?
我有一个应用程序,其中我使用 SPIN 构造函数作为实现事件/条件/操作 (ECA) 策略的手段。ECA 是一种经典的策略构造。在这种情况下,事件始终是一个类对个体的断言,它导致该类的 SPIN 构造函数在该新个体上运行。Condition 是在我的 SPARQLWHERE子句中表达的模式,而 Action 是由 SPARQLCONSTRUCT子句中的断言提供的。我的理解是 SPIN 构造函数只会在类的新个体上运行,而不是在类的所有个体上运行。
我现在正在考虑切换到 SHACL 作为 SPIN 的继任者。我正在 TopBraid Composer Maestro Edition 中开发,我可以使用 Jena SHACL API 来实现。
假设我将 ECA 策略表示为 SHACL 形状并通过sh:targetClassSHACL 谓词定位一个类。假设我的目标类是family:Person. 每次我断言一个新family:Person个体时,我都想只对那个新个体运行我的 ECA 策略(表示为 SHACL 形状)。我知道可以使用侦听器来感知新的班级成员资格。我也知道,RuleUtil.executeRules()一旦感知到更改,就可以使用诸如此类的方法来执行所有目标节点(family:Person在我的示例中为类的个人)上的所有规则。但是,有没有办法将 SHACL 形状仅应用于目标类的新个体? 在我的应用程序中,个人会随着时间的推移而积累,并且可能会变得非常多。我担心重复运行形状对相同的、旧的、未改变的个体的计算负载会变得很重要。
sparql - 从 SHACL 生成 SPARQL 查询
我有一种特殊情况,我需要根据传入数据的 SHACL 模式自动生成 SPARQL 查询。我想知道 Jena 或任何其他语义工具/库是否可以帮助做到这一点?
我在 Jena 代码上看到了一些东西,但文档中没有任何官方信息。
在我开始尝试开发自己的解决方案之前,我想知道是否已经有一些现有的库在此之上,或者正在进行中。
jena - 为什么 SHACL API 的 SHShape.hasTargetNode 对目标类返回 False?
在断言类时尝试有选择地调用形状/规则的过程中,我正在使用以下示例形状定义(在 TTL 中):
我现在专注于familyShapes:GrandpaRuleShape形状(从第 30 行开始),我相信第 58 行针对familyShapes:Person类。
SHACL API 的RuleUtil.getShapesWithTargetNode方法返回一个空列表,这不是我所期望的结果,因此我创建了该RuleUtil.getShapesWithTargetNode方法的临时本地副本,如下所示,以帮助我调试自己的代码。
在这个方法中,我已经停止在调试器中执行focusNode=http://example.org/familyShapes#Person和代表上述形状文件的 shapeGraph。在分配了两个布尔值之后,断点位于 for 循环中的条件处。shape的第一个值为familyShapes:GrandpaRuleShape。但是,布尔值shapeFocused是false. 布尔值shapeHasRule与true预期的一样。
我期待这shapeFocused将是true在执行的时候。在更高的层次上,我期望这个方法会返回一个至少包含爷爷形状的列表,但它返回的是空的。我想我一定是错误地设置了对这个方法的调用,但我不确定我做错了什么。有什么建议么?
rdf - SHACL SPARQL 目标在使用 pySHACL 时没有给出正确的推断
当我尝试进行基于 SPARQL 的 SHACL 验证时,我得到了错误的结果。我正在尝试使用 SHACL SPARQL 目标过滤掉起重机容量小于模块重量的进程。
我得到了结果
但是,如果将相同的文件写为单个 rdf 文件,它会给我 false 这是正确的答案
它给出了正确的推论。
我的实施有什么问题?