gpt4 book ai didi

sparql - SPARQL 查询中的过滤器

转载 作者:行者123 更新时间:2023-12-02 09:08:14 28 4
gpt4 key购买 nike

我有以下 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

但是这不会返回任何内容。有谁知道查询有什么问题吗?谢谢。

最佳答案

You will see that you get a lot of results. Now I would like to filter out one death cause, let's say 'Traffic collision'. So this should be simply by adding a filter:

FILTER (?death_cause = "Traffic collision" ).

过滤器定义您保留哪些内容,而不是您删除哪些内容,因此,如果您想过滤排除交通冲突,您实际上需要:

FILTER ( ?death_cause != "Traffic collision" )

如果您尝试这样做,您仍然会在结果中看到交通碰撞,因为“交通碰撞”“交通碰撞”@en 之间存在差异>。前者(这是您的代码要删除的内容)是纯文字(即没有数据类型或语言标签)。后者是带有语言标签 "en" 的文字。它们相同,因此过滤掉一个并不会过滤掉另一个,保留一个也不会保留另一个。要删除“交通碰撞”@en,您可以使用以下方法将其过滤掉:

FILTER ( ?death_cause != "Traffic collision"@en )

或者,您可以使用 str函数来获取文字的词汇部分,因此您可以过滤掉“交通碰撞”,而不管语言标记(或数据类型,如果它显示为类型化文字):

FILTER ( str(?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 (langMatches(lang(?name), "EN")) .
FILTER ( ?death_cause != "Traffic collision"@en )
}
LIMIT 50

SPARQL results

关于sparql - SPARQL 查询中的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652766/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com