如何使用2个变量进行sparql查询?
让我解释一下:
我有历史地图的本体论。我的实体是:HistoricalMap
,Language
,Color
并且连接它们的对象属性是:hasLanguage
,hasColor
(hist.map具有语言并具有颜色)。
如果我进行查询:
SELECT ?HistoricalMap ?Language ?Color
WHERE { ?HistoricalMap p1:hasLanguage ?Language.
?HistoricalMap p1:hasColor ?Color.
}
我得到了所有有颜色和语言的地图。
我如何才能要求提供hasColor
“红色”和hasLanguage
法语的地图?
答案 0 :(得分:5)
因为你想要“AND”,你可以在模式中使用常量。
SELECT ?HistoricalMap
WHERE { ?HistoricalMap p1:hasLanguage "French".
?HistoricalMap p1:hasColor "Red" .
}
如果您还想保留变量,请使用FILTER
:
SELECT ?HistoricalMap ?Language ?Color
WHERE { ?HistoricalMap p1:hasLanguage ?Language.
?HistoricalMap p1:hasColor ?Color.
FILTER(?Language = "French" && ?Color = "Red")
}
答案 1 :(得分:3)
您需要了解法语和红色在数据中的表示方式。
在执行您提到的查询时,应该看看它们是如何返回的。
查询dbpedia,例如:
SELECT ?entity
WHERE {
?entity dbpedia-owl:colour <http://dbpedia.org/resource/Red> .
?entity dbpedia-owl:language <http://dbpedia.org/resource/French_language> .
}