SPARQL - 过滤评论。标签和摘要为英文,并保留整数和 uri 值
SPARQL - Filter comment. label and abstract to english and keep integer as well as uri values
我正在尝试从 DBPedia 获取有关某些资源的可用信息。
但是,我想过滤掉标签、评论和摘要,使其仅使用英文。
我原来的查询是:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . }
为了过滤英文结果我修改为:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?value) = "en") }
但是,这样做我丢失了很多条目和信息,例如人口、密度、位置、纬度、经度等等。
我想知道,是否有办法获取所有可用条目,但将 abstract
、label
和 comment
过滤为仅英文。
我已尝试将我的查询修改为以下内容:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?rdfs:label) = "en")}
不幸的是,我没有得到任何结果,因为查询是错误的。
任何帮助将不胜感激。
经过深入研究,我已经回答了我自己的问题。
您可以使用 FILTER
函数获取所有可用或不可用 @en
或 language
部分的值。为此,您可以使用以下部分:
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en")
然而,这会导致失去所有可用的 uri
和其他 links
。
如果还想获得除 英文过滤结果 之外的所有链接,还需要一个与 startsWith
函数类似的函数。它在 SPARQL 语言中的等效项称为 strstarts
。我在查询中的 FILTER
中添加了以下部分,并且我已经获得了所有最初需要的结果。
strstarts(str(?value), 'http'))
这就是结果查询。提示我已经删除了前缀,因为我在查询中不需要它们
SELECT ?property ?value { <http://dbpedia.org/resource/England> ?property ?value .
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en") || strstarts(str(?value), 'http'))}
我正在尝试从 DBPedia 获取有关某些资源的可用信息。 但是,我想过滤掉标签、评论和摘要,使其仅使用英文。
我原来的查询是:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . }
为了过滤英文结果我修改为:
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?value) = "en") }
但是,这样做我丢失了很多条目和信息,例如人口、密度、位置、纬度、经度等等。
我想知道,是否有办法获取所有可用条目,但将 abstract
、label
和 comment
过滤为仅英文。
我已尝试将我的查询修改为以下内容:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?property ?value (lang(?value ) as ?lang) { <http://dbpedia.org/resource/England> ?property ?value . FILTER(LANG(?rdfs:label) = "en")}
不幸的是,我没有得到任何结果,因为查询是错误的。 任何帮助将不胜感激。
经过深入研究,我已经回答了我自己的问题。
您可以使用 FILTER
函数获取所有可用或不可用 @en
或 language
部分的值。为此,您可以使用以下部分:
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en")
然而,这会导致失去所有可用的 uri
和其他 links
。
如果还想获得除 英文过滤结果 之外的所有链接,还需要一个与 startsWith
函数类似的函数。它在 SPARQL 语言中的等效项称为 strstarts
。我在查询中的 FILTER
中添加了以下部分,并且我已经获得了所有最初需要的结果。
strstarts(str(?value), 'http'))
这就是结果查询。提示我已经删除了前缀,因为我在查询中不需要它们
SELECT ?property ?value { <http://dbpedia.org/resource/England> ?property ?value .
FILTER(LANG(?value) = "" || LANGMATCHES(LANG(?value), "en") || strstarts(str(?value), 'http'))}