我正在寻找一种简单的方法将三元组从两个或多个命名图(但不是整个未命名的默认图)插入另一个命名图。 我正在使用 GraphDB。
我想这可以通过在该部分中多次写出相同的查询WHERE
,包装在多个 GRAPH
规范中,然后将它们合并在一起来完成,但是我WHERE
的 s 很长,我不想多次写出它们。
假设我已经加载了一些这样的数据:
INSERT DATA {
GRAPH <http://example.com/ngA> {
<http://example.com/person1> <http://example.com/name> "Arthur" .
}
GRAPH <http://example.com/ngB> {
<http://example.com/person1> <http://example.com/name> "Brian" .
}
GRAPH <http://example.com/ngC> {
<http://example.com/person1> <http://example.com/name> "Charlie" .
}
}
我可以将某个模式的所有三元组从默认的未命名图中复制到一个新的命名图中,如下所示:
INSERT {
GRAPH <http://example.com/ngZ> {
?s <http://example.com/moniker> ?o .
}
}
WHERE
{ ?s <http://example.com/name> ?o }
SELECT
从两个或更多(但不是全部)命名图中获取给定模式的三元组的简单方法是
SELECT *
FROM <http://example.com/ngA>
FROM <http://example.com/ngB>
WHERE
{ ?s <http://example.com/name> ?o }
如果我想将这些三元组从那些指定的图表中复制到另一个图表中怎么办?
当我尝试
INSERT {
GRAPH <http://example.com/ngZ> {
?s <http://example.com/moniker> ?o .
}
}
WHERE
{ SELECT *
FROM <http://example.com/ngA>
FROM <http://example.com/ngB>
WHERE
{ ?s <http://example.com/name> ?o } }