【问题标题】:SPARQL Unbound VariablesSPARQL 未绑定变量
【发布时间】:2015-12-03 23:13:51
【问题描述】:

我需要帮助来准确理解这个 sparql 查询的作用(要求):

SELECT ?subject ?object
    WHERE { ?subject onto:personName ?object . ?w ?q ?s}

这是来自人的本体论。第一部分很容易理解;一些未知的主题必须有一个值未知的 personName,但为什么第二部分是相关的?

这是我需要帮助理解的内容:当有两种模式(“。”之前和之后)时,这是否意味着节点必须同时匹配第一个和第二个模式?如果是这样,这种情况下的第二种模式接缝说:“一些未知的主体必须有一些未知的谓词和一些未知的对象”,这将返回 RDF 图中的所有三元组......所以在这种情况下,第二种模式将匹配所有三元组,但结果将受到第一个模式的限制..

我的问题是,为什么第二种模式很重要,因为它似乎等同于第一种模式。但是当我运行它时,我得到了本体中的“所有”三元组,所以我需要准确了解查询的作用。

另外:如果我用?object 替换?w 会发生什么,从而将?object 绑定到boh 模式,所以看起来像:?object 必须有一些谓词?q 和一些对象@987654327 @,因此如果我将?w 替换为?object,它将在模式1 中找到?object 的传递对象(?s)......换句话说:?subject --> onto:personName --> ?object --> ?q --> ?s

【问题讨论】:

    标签: rdf sparql


    【解决方案1】:

    这是我需要帮助理解的内容:当有两种模式时 (“。”之前和之后)这是否意味着节点必须同时匹配 第一个和第二个模式?

    是的。

    如果是这样,这里的第二个模式 案例接缝说:“一些未知的主题必须有一些未知 谓词和一些未知对象”,这将返回所有 RDF 图中的三倍...

    正确。

    所以在这种情况下,第二种模式将 匹配所有三元组,但结果将受到限制 第一个模式..

    实际上,第二个模式的结果完全不受第一个模式的限制——因为这些模式不共享变量。您没有取回数据集中所有三元组的原因仅仅是在您的SELECT 子句中,您只指定了第一个模式中的变量。如果你改用SELECT *SELECT ?subject ?object ?w ?q ?s,你会得到一切。

    我的问题是,为什么第二种模式很重要,因为它似乎等同于第一种模式。

    不等价,因为第二个模式匹配所有个可能的三元组,而第一个模式只匹配那些以onto:personName 作为谓词的三元组。

    虽然在您的查询结果中没有找到 ?w?q?s 的值,但包含此模式确实会对您的结果产生影响。通过指定两个模式,您可以有效地表达两个模式之间的连接。由于这两种模式不共享变量,因此可以说没有“连接条件”。这样做的结果是,您的查询结果将是匹配第一个模式的所有三元组和匹配第二个模式的所有三元组的 Carthesian 乘积。

    因此,您将在查询结果中看到?subject?object 的许多重复行:每对将重复N 次,其中N 是匹配第二个模式的三元组数。

    因此,总而言之,除非您有一个非常奇特的用例,否则第二种模式比无用更糟糕,因为它不仅不会在结果中产生任何有用的数据,而且会确保结果包含大量重复项(并且可能还会导致您的查询执行时间比实际需要的时间长得多)。

    另外:如果我用 ?object 替换 ?w 会发生什么,从而将 ?object 绑定到 boh 模式,所以看起来像:?object 必须有一些谓词 ?q 和一些对象 ?s,所以如果我将 ?w 替换为 ?object,它将在模式 1 中找到 ?object 的传递对象 (?s)... 换句话说:?subject --> on:personName --> ?object --> ?q -- > ?s.

    确实如此。如果你这样做了,你将有一个共享变量,因此两个模式之间的连接条件。对查询结果的影响将是您现在不再收到 all ?subject ?object 存在 onto:personName 谓词的对,而只收到它的那些确实,?object 值作为数据集中某个其他三元组的主题出现。

    【讨论】:

    • 非常感谢,非常好的解释:)
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多