【问题标题】:What is the proper universal way of inserting blank nodes using SPARQL使用 SPARQL 插入空白节点的正确通用方法是什么
【发布时间】:2016-08-19 05:20:47
【问题描述】:

我正在使用 Apache Jena 框架编写应用程序。有了这个,我可以做所有事情(插入、更新、选择)。但我不知道如何使用INSERT 查询正确插入空白节点。

是否有解决此问题的首选方法(适用于每个端点)?我知道 SPARQL 1.1 引入了一些功能来实现这一点,但它似乎不适用于 Virtuoso 端点。

【问题讨论】:

  • 将 bNodes(空白节点、未命名节点)视为代词会有所帮助——当您不知道确实存在且您需要的实体的正确名称时使用参考,是描述它还是描述其他实体。让其他人为您提供建议,了解您尝试了什么、获得了什么结果以及这些结果与您的预期/期望有何不同会有所帮助。
  • 如果这方面确实存在 Virtuoso 特定方面,则此类问题通常可以通过 Virtuoso Users mailing listOpenLink Support ForumsOpenLink Support Case 等 Virtuoso 焦点论坛更快、更准确地回答. (ObDisclaimer:我为 Virtuoso 的制作人 OpenLink Software 工作。)

标签: sparql jena virtuoso fuseki blank-nodes


【解决方案1】:

有几种语法可供使用。假设您想将:Person 类型的bnode 添加到名为child 的对象属性中。这是一种方法:

?s :child [a :Person] .

还有一个:

?s :child [] .
[] a :Person .

_:bn 表示法非常普遍,当图中有多个 bnode 时很有用:

?s :child _:b0 .
_:b0 a :Person .

【讨论】:

  • "在图中有多个 bnode 时很有用:" 我认为当您需要多次引用一个 bnode 时它最有用。例如,。 :s1 :p _:b0 . :s2 :p _:b0 .
  • 感谢您的回答。它使我对 bNodes 的看法更加清晰。而且我也有点意识到,可能无法从具有逐行 INSERT DATA 查询的表中插入 bNodes。 (并保持表中 bNode 之间的连接)。所以我想找到一种方法将本地模型直接插入远程端点会更明智。
猜你喜欢
  • 2017-10-11
  • 2017-11-17
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多