在多个图之间的 virtuoso sparql 中使用 sameAs
Using sameAs in virtuoso sparql between multiple graphs
我正在使用 virtuoso 7.2.1,我正在尝试 运行 3 个图之间的 sparql 查询。
G1 包含:
@prefix : <http://test#> .
:bob :hasAddress :add1 .
G2 包含:
@prefix : <http://test#> .
:bob :hasAddress :add2 .
并且 G3 包含:
@prefix : <http://test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
:add1 owl:sameAs :add2 .
我正在尝试 运行 的 sparql 是:
DEFINE input:same-as "yes"
Select *
from <http://G1>
from <http://G3>
Where{
<http://test#bob> <http://test#hasAddress> ?z .
}
结果:
<http://test#add1>
预期结果:
<http://test#add1>
<http://test#add2>
注意:如果我使用 单图 (G1、G2、G3 合并到 G 图),我会得到预期的结果。为什么这不适用于多个图表。
谢谢。
--------------------------------编辑-------- -----
分别是这个查询:
DEFINE input:same-as "yes"
Select *
from <http://G2>
from <http://G3>
Where{
<http://test#bob> <http://test#hasAddress> ?z .
}
或此查询:
DEFINE input:same-as "yes"
Select ?z
from named <http://G2>
from named <http://G3>
Where{
graph ?g {<http://test#bob> <http://test#hasAddress> ?z .}
}
只有这个结果:
<http://test#add2>
您从原始查询中排除了 G2,并从第二个和第三个查询中排除了 G1。 sameAs
不会在您的查询中添加 FROM
子句;它只是说 "these two URIs reference the same entity."
试试这些 --
DEFINE input:same-as "yes"
SELECT *
FROM <http://G1>
FROM <http://G2>
FROM <http://G3>
WHERE
{
<http://test#bob> <http://test#hasAddress> ?z
}
-- 和--
DEFINE input:same-as "yes"
SELECT *
FROM <http://G1>
FROM <http://G2>
FROM <http://G3>
WHERE
{
<http://test#bob> <http://test#hasAddress> ?z
}
-- 和--
DEFINE input:same-as "yes"
SELECT ?z
FROM NAMED <http://G1>
FROM NAMED <http://G2>
FROM NAMED <http://G3>
WHERE
{
GRAPH ?g
{ <http://test#bob> <http://test#hasAddress> ?z }
}
我正在使用 virtuoso 7.2.1,我正在尝试 运行 3 个图之间的 sparql 查询。
G1 包含:
@prefix : <http://test#> .
:bob :hasAddress :add1 .
G2 包含:
@prefix : <http://test#> .
:bob :hasAddress :add2 .
并且 G3 包含:
@prefix : <http://test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
:add1 owl:sameAs :add2 .
我正在尝试 运行 的 sparql 是:
DEFINE input:same-as "yes"
Select *
from <http://G1>
from <http://G3>
Where{
<http://test#bob> <http://test#hasAddress> ?z .
}
结果:
<http://test#add1>
预期结果:
<http://test#add1>
<http://test#add2>
注意:如果我使用 单图 (G1、G2、G3 合并到 G 图),我会得到预期的结果。为什么这不适用于多个图表。 谢谢。
--------------------------------编辑-------- -----
分别是这个查询:
DEFINE input:same-as "yes"
Select *
from <http://G2>
from <http://G3>
Where{
<http://test#bob> <http://test#hasAddress> ?z .
}
或此查询:
DEFINE input:same-as "yes"
Select ?z
from named <http://G2>
from named <http://G3>
Where{
graph ?g {<http://test#bob> <http://test#hasAddress> ?z .}
}
只有这个结果:
<http://test#add2>
您从原始查询中排除了 G2,并从第二个和第三个查询中排除了 G1。 sameAs
不会在您的查询中添加 FROM
子句;它只是说 "these two URIs reference the same entity."
试试这些 --
DEFINE input:same-as "yes"
SELECT *
FROM <http://G1>
FROM <http://G2>
FROM <http://G3>
WHERE
{
<http://test#bob> <http://test#hasAddress> ?z
}
-- 和--
DEFINE input:same-as "yes"
SELECT *
FROM <http://G1>
FROM <http://G2>
FROM <http://G3>
WHERE
{
<http://test#bob> <http://test#hasAddress> ?z
}
-- 和--
DEFINE input:same-as "yes"
SELECT ?z
FROM NAMED <http://G1>
FROM NAMED <http://G2>
FROM NAMED <http://G3>
WHERE
{
GRAPH ?g
{ <http://test#bob> <http://test#hasAddress> ?z }
}