Sparql where 子句
Sparql where clause
我正在尝试创建一个 sparql 查询,该查询 returns 列 "subject" 为“http://purl.org/dc/elements/1.1/creator”的每一列。
在sql中应该是这样的:
SELECT * WHERE Subject = "<http://purl.org/dc/elements/1.1/creator>"
接近我想要的 sparql 查询如下所示:
SELECT ?subject ?predicate ?object
WHERE {
<http://purl.org/dc/elements/1.1/creator> ?object ?predicate optional {
?subject ?predicate ?object
}
}
它 returns 一个 table,包含所有三列,但 ?subject 列由于某种原因为空。 ?predicate 和 ?object 列不为空并显示正确的数据。
谁能帮我解决这个问题?
非常感谢:D
假设您的 Triplestore 中填充了正确的语句,然后尝试 -
SELECT ?subject ?predicate ?object
WHERE {
VALUES ?subject { <http://purl.org/dc/elements/1.1/creator> }
?subject ?predicate ?object .
}
有几种方法可以做到这一点。除了 Anthony 给出的解决方案,使用 VALUES
子句,您还可以使用 FILTER
条件:
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object .
FILTER(?subject = <http://purl.org/dc/elements/1.1/creator>)
}
或者如果您的目标不一定是获得包含三列的 table,而是要返回具有该特定主题的所有三元组,您还可以使用 CONSTRUCT 查询:
CONSTRUCT
WHERE { <http://purl.org/dc/elements/1.1/creator> ?predicate ?object }
我正在尝试创建一个 sparql 查询,该查询 returns 列 "subject" 为“http://purl.org/dc/elements/1.1/creator”的每一列。
在sql中应该是这样的:
SELECT * WHERE Subject = "<http://purl.org/dc/elements/1.1/creator>"
接近我想要的 sparql 查询如下所示:
SELECT ?subject ?predicate ?object
WHERE {
<http://purl.org/dc/elements/1.1/creator> ?object ?predicate optional {
?subject ?predicate ?object
}
}
它 returns 一个 table,包含所有三列,但 ?subject 列由于某种原因为空。 ?predicate 和 ?object 列不为空并显示正确的数据。
谁能帮我解决这个问题?
非常感谢:D
假设您的 Triplestore 中填充了正确的语句,然后尝试 -
SELECT ?subject ?predicate ?object
WHERE {
VALUES ?subject { <http://purl.org/dc/elements/1.1/creator> }
?subject ?predicate ?object .
}
有几种方法可以做到这一点。除了 Anthony 给出的解决方案,使用 VALUES
子句,您还可以使用 FILTER
条件:
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object .
FILTER(?subject = <http://purl.org/dc/elements/1.1/creator>)
}
或者如果您的目标不一定是获得包含三列的 table,而是要返回具有该特定主题的所有三元组,您还可以使用 CONSTRUCT 查询:
CONSTRUCT
WHERE { <http://purl.org/dc/elements/1.1/creator> ?predicate ?object }