Sparql查询有两个变量

时间:2013-04-11 11:38:27

标签: sparql

如何使用2个变量进行sparql查询? 让我解释一下: 我有历史地图的本体论。我的实体是:HistoricalMapLanguageColor 并且连接它们的对象属性是:hasLanguagehasColor(hist.map具有语言并具有颜色)。 如果我进行查询:

SELECT ?HistoricalMap ?Language ?Color
        WHERE { ?HistoricalMap p1:hasLanguage ?Language.
                       ?HistoricalMap p1:hasColor ?Color.
}

我得到了所有有颜色和语言的地图。

我如何才能要求提供hasColor“红色”和hasLanguage法语的地图?

2 个答案:

答案 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> .
}