gpt4 book ai didi

sparql - 使用 sparql 生成带有子图的图

转载 作者:行者123 更新时间:2023-12-02 06:28:46 26 4
gpt4 key购买 nike

我的 RDF 存储区存在以下情况:

命名图:A

  S1 P1 O1

命名图:B

  S2 P2 O1

命名图:C

  S3 P3 O1

我现在想要定义一个 SPARQL 查询,它查找 O1 位于三元组中的所有图,并将这 3 个图 + 三元组存储在名为 A+B+C 的新图中

新命名图:A+B+C

Named Graph: A
S1 P1 O1
Named Graph: B
S2 P2 O1
Named Graph: C
S3 P3 O1

使用Construct或insert Into我只知道如何用三元组构建图表,bzw而不是如何构建包含图表的图表?

这可能吗?如果可能的话,如何实现?

给你加油

最佳答案

您无法完全按照您想要的方式进行,因为子图无法按照您描述的方式显式地存储在彼此之间。但是,您可以将所有三元组放入一个图表中,这可能就足够了:

PREFIX : <http://example.org/>
INSERT
{
# Output triples in the desired graph
GRAPH ?name { ?s ?p ?o }
}
WHERE
{
# Use a sub-query to find all relevant graphs and concatenate their names together
{
SELECT (GROUP_CONCAT(STR(?g)) AS ?strName) (URI(?strName) AS ?name)
WHERE
{
GRAPH ?g { ?s ?p :o1 }
}
GROUP BY ?g
}
# Join the name to all the relevant triples
GRAPH ?g
{
?s ?p :o1 .
?s ?p ?o .
}
}

所以这有点hacky,但应该大致符合你的要求。它使用子查询来查找具有相关三元组的所有图,并将它们的名称连接在一起并将其转换为 URI。请注意,这很可能会创建一个非常无效的 URI,这可能意味着查询的后续步骤将不起作用。

然后,它将该图形名称与图形中包含具有所需主题的三元组的所有三元组连接在一起。

最后,它将使用新创建的名称将这些输出到图表中,具体取决于商店,这可能不起作用,因为您可能创建了非法的图表名称。

这可能无法完全满足您的要求,但希望能为您指明正确的方向。

关于sparql - 使用 sparql 生成带有子图的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383932/

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