我想获得#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" }

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

最佳答案

规范中有很多示例 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 }

SPARQL 中没有连接或连接运算符。当您编写多个模式时,它们都必须匹配。有关更多信息,请参阅 my answersparql join query explanation hows its working?。 (这不是一个好问题,但它解释了 SPARQL 中隐含的连接)。那么您的查询会是什么样子呢?

我将使用前缀使您的查询更易于阅读。您提到了 #PeakDay#PeekHour ,但您的 URI 实际上是 ...#filePeakDay...#filePeakHour 。但是,使用前缀,您可以只编写 :PeakHour:PeakDay
prefix : <http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#file>

select ?x where {
  ?x :PeakHour "19" .
  ?x :PeakDay "Sunday" .
}

如果你愿意,你可以使用一些语法糖来缩短它:
prefix : <http://www.semanticweb.org/administrator/ontologies/2014/2/untitled-ontology-5#file>

select ?x where {
  ?x :PeakHour "19" ;
     :PeakDay "Sunday" .
}

关于rdf - Sparql 查询 where 子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24190477/

10-13 02:41