Sparql 查询 where 子句

Sye*_*ani 4 rdf sparql

我想要获取#peakHour 为“19”且#peakDay 为“Sunday”的个人。(就像在 SQL 中一样SELECT * From abc WHERE peakHour = "19" AND PeakDay = "Suday":)

下面的 sparql 查询工作正常,但不完整。我不知道如何将(和#peakDay =“Sunday”)添加到 sparql 查询中

SELECT ?x WHERE 
{ ?x <http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#filePeakHour> "19" }
Run Code Online (Sandbox Code Playgroud)

请指导我如何AND在 Sparql 查询的 WHERE 子句中添加关键字

Jos*_*lor 5

SPARQL 1.1 Query Language规范中有很多示例,其中包括2.2 Multiple Matches中的一个示例:

PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE
  { ?x foaf:name ?name .
    ?x foaf:mbox ?mbox }
Run Code Online (Sandbox Code Playgroud)

SPARQL 中没有合取或连接运算符。当您编写多个模式时,它们必须匹配。请参阅sparql join 查询解释的回答它是如何工作的?有关于此的更多信息。(这不是一个很好的问题,但它解释了 SPARQL 中隐含的连接)。那么您的查询会是什么样子?

我将使用前缀来使您的查询更易于阅读。您提到了#PeakDay#PeekHour,但您的 URI 实际上是...#filePeakDay...#filePeakHour。不过,使用前缀,您可以只写:PeakHourand :PeakDay

prefix : <http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#file>

select ?x where {
  ?x :PeakHour "19" .
  ?x :PeakDay "Sunday" .
}
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以使用一些语法糖来使其更短:

prefix : <http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#file>

select ?x where {
  ?x :PeakHour "19" ;
     :PeakDay "Sunday" .
}
Run Code Online (Sandbox Code Playgroud)