gpt4 book ai didi

sparql - 加入 SPARQL 查询

转载 作者:行者123 更新时间:2023-12-05 01:47:37 25 4
gpt4 key购买 nike

我在 RDF 知识库中有多个图表

for example
<123> <hasValue> "23" <graph1>
<234> <hasValue> "47" <graph1>
<374> <hasValue> "23" <graph1>
-----------
----------
<456> <hasFeature> "50" <graph2>
<244> <hasFeature> "23" <graph2>
<123> <hasFeature> "23" <graph2>
---------------------

现在我想运行 SPARQL 查询以获得两个图中常见的结果。

假设如果我对一张图运行以下查询,我得到以下结果

SELECT ?subject 
FROM Named <http://www.xyz.com/namespace/graph1>
WHERE {GRAPH ?graph
{?subject prefix:hasValue "23" .}}

<123>
<374>
---
---
---

如果对 graph2 运行以下第二个查询,我会得到以下信息

SELECT ?subject 
FROM Named <http://www.xyz.com/namespace/graph2>
WHERE {GRAPH ?graph
{?subject prefix:hasFeature "23" .}}

<244>
<123>
-----

但是我想要在两个查询中都很常见的主题 <123>。我们可以通过任何方式组合两个查询来获得两个查询中唯一共同的主题。提前致谢。

最佳答案

是的,加入 SPARQL 只是陈述具有公共(public)变量的多个模式的情况。因此,我们主要可以将您的两个查询一起剪切并通过:

SELECT ?subject 
FROM NAMED <http://www.xyz.com/namespace/graph1>
FROM NAMED <http://www.xyz.com/namespace/graph2>
WHERE
{
GRAPH <http://www.xyz.com/namespace/graph1>
{
?subject prefix:hasValue "23" .
}
GRAPH <http://www.xyz.com/namespace/graph2>
{
?subject prefix:hasFeature "23" .
}
}

请注意,由于您现在要分别查询这两个图,我们需要为每个 GRAPH 子句显式命名图。我们不能只使用单个 GRAPH ?graph 模式,因为它会单独匹配每个命名图并将结果合并在一起,而这并没有您想要的语义。

通过此查询,两个图表的结果现在将连接在一起,因此您只会获得两个图表中模式匹配的结果。

关于sparql - 加入 SPARQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com