我有以下的SPARQL查询:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
SELECT *
WHERE {
?person a foaf:Person;
foaf:name ?name;
prop:deathCause ?death_cause.
FILTER (langMatches(lang(?name), "EN")) .
}
LIMIT 50
如果您在这里运行:http://dbpedia.org/snorql/ 您会发现得到很多结果。现在我想要过滤出一个死因,比如说“交通事故”。所以只需要添加一个筛选器即可:
FILTER (?death_cause = "Traffic collision").
因此,查询应该是:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
SELECT *
WHERE {
?person a foaf:Person;
foaf:name ?name;
prop:deathCause ?death_cause.
FILTER (?death_cause = "Traffic collision").
FILTER (langMatches(lang(?name), "EN")) .
}
LIMIT 50
然而,这并没有返回任何结果。有人知道查询有什么问题吗?谢谢。
str
从这三种文字中提取字符串部分。我已经在答案中添加了更多解释。 - Joshua Taylor