繁体   English   中英

Sparql where子句

[英]Sparql where clause

我正在尝试创建一个sparql查询,该查询将返回“主题”列为“ 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
  }
}

它返回一个包含所有三列的表,但是出于某些原因,?subject列为空。 ?谓词和?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>)
}

或者,如果您的目标不一定是获得包含三列的表格,而是要获取该特定主题的所有三元组,则还可以使用CONSTRUCT查询:

CONSTRUCT 
WHERE { <http://purl.org/dc/elements/1.1/creator> ?predicate ?object }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM