问题标签 [spin-rdf]

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 投票
1 回答
189 浏览

sparql - 当 sp:text 出现在导入的 RDF 文件中时,如何指示 RDF4J 使用 SPIN RDF 三元组?

我正在使用 RDF4J 服务器和工作台版本 2.2.2。我在 RDF4J 中使用支持 SPIN 的存储库,并且正在阅读我在 TobBraid Composer 免费版 (TBC FE) 中创建的包含许多spin:construct规则的 RDF 文件。TBD FE 设置为通过sp:text属性包含我的构造函数的 SPARQL 源代码。我观察到,当sp:text三元组存在使 SPARQL 源代码可用于 RDF4J 时,RDF4J 似乎使用 SPARQL 源而不是使用相同查询的 RDF 标记化表示。我的主要和次要问题是:

  • sp:text当导入的 RDF 文件中同时存在 和 RDF 表示时,如何指示 RDF4J 使用 SPIN 构造函数的 RDF 表示?
  • 如果 RDF4J 使用sp:textSPIN 构造函数的表示,如何指示它使用出现在导入的 RDF 文件头部的前缀定义?到目前为止,我有 69 个构造函数并且还在增加。虽然我可以在每个构造函数中嵌入前缀定义,但这样做似乎很浪费。

当我剥夺 RDF4J 的sp:textSPARQL 源代码表示时,构造函数会使用在导入的 RDF 文件头部定义的前缀按预期运行。在实例化我定义了构造函数的类之前,我可以通过执行删除源代码的查询来剥夺 RDF4J 的源代码。我已经使用这个 SPARQL 更新查询来完成这个目的:

我想保留 SPARQL 源代码以在我正在构建的 GUI 中显示,该 GUI 通过 SPARQL 查询与 RDF4J 服务器通信。sp:text我尴尬的临时解决方法是使用下面第 5 步中使用的 SPARQL 更新查询替换另一个自定义数据属性。此属性替换成功地阻止 RDF4J 找到 SPIN 构造函数的 SPARQL 源代码。然后 RDF4J 转而解释规则的标记化 RDF 表示。有没有更简洁的方法来强制 RDF4J 从 RDF 而不是从 SPARQL 源代码执行 SPIN 构造函数?我在想必须有某种方式来指示 RDF4J 来解释 RDF 表示而不是 SPARQL 源代码,但我不知道如何。

现在,让这种情况可重现的血腥细节......

  1. 使用 RDF4J 工作台在 RDF4J 中创建一个支持 SPIN 的存储库。我的名为 TakeRDF4J4SPIN(存储库→新存储库)
  2. 使用 RDF4J 工作台清除存储库(修改 → 清除)
  3. 使用 RDF4J 工作台加载pub7.rdf ...(修改 → 添加 w/ 使用基本 URI 作为上下文标识符未选中)

请注意,此 RDF 文件在文件开头定义了所有相关前缀:

另请注意,附加到该类的 SPIN 构造函数pub7:Pub7TestClass是:

  1. 尝试创建pub7:Pub7TestClass...的实例

我在 RDF4J 工作台的 Modify → SPARQL Update 中使用这个 SPARQL 更新查询来创建实例...

由于尝试基于sp:textSPARQL 源代码表示执行上述构造函数,这将导致在 RDF4J 工作台中报告前缀未定义错误:

  1. sp:text现在使用以下 SPARQL 更新查询从 RDF4J 中隐藏 SPIN 构造函数:

.

  1. 现在重新运行步骤 4 中显示的 SPARQL 更新查询以实例化测试类。这次更新查询应该没有错误地运行。

  2. 现在使用 RDF4J Workbench 的 Explore → Explore 函数来查看我们刚刚创建的实例化/个体,inst:aPub7TestClassInstance_test1. 应该看到实例化通过spin:hasConstratintViolation属性有一个约束违反通知,提供了测试构造函数这次确实在没有sp:text表示的情况下运行的证据,被迫使用 SPIN 构造函数的 RDF 标记化表示。

0 投票
1 回答
303 浏览

semantic-web - 一个简单的 SPIN 规则在 RDF4J 中不起作用

我刚刚开始使用三重存储 RDF4J(我正在使用它的工作台,版本 2.3.1,在带有 Tomcat 9.0 的 Windows 10 上运行)

我想在 RDF4J 中使用 SPIN 规则。因此,我创建了一个新的存储库(在内存中支持 RDFS+SPIN)。

我想从RDF4J 文档中关于如何添加 SPIN 规则的 SPIN 示例开始。也就是说,我添加了数据(在 Turtle 中,并导入到 RDF4J 中)

和规则:

并按照文档中的说明,我公开了查询(选中了“包含推断语句”复选框),

但是,没有返回任何结果:

没有结果

有人可以告诉我我做错了什么吗,为什么 SPIN 规则在我的 RDF4J 工作台中不起作用,我错过了什么吗?

0 投票
1 回答
166 浏览

sparql - SPIN 表示为 SPARQL

是否有 API 可以帮助将(SPARQL 查询的)SPIN 表示转换回其 SPARQL 查询形式?

从:

至:

提前致谢。