2

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

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

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

我如何索要hasColor“红色”和hasLanguage法语的地图?

4

2 回答 2

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")
}
于 2013-04-11T18:36:20.777 回答
3

您需要了解法语红色在数据中的表示方式。

在执行您提到的查询时,看看它们是如何返回的就足够了。

查询 dbpedia,例如:

SELECT ?entity
WHERE {
  ?entity dbpedia-owl:colour <http://dbpedia.org/resource/Red> .
  ?entity dbpedia-owl:language <http://dbpedia.org/resource/French_language> .
}
于 2013-04-11T18:36:31.817 回答