小编Fun*_*ica的帖子

SPARQL过滤器lang'en'提供其他语言

以下SPARQL查询无法获得我想要的结果,因为它们使用的是其他语言而不是英语(无论filter lang 'en'查询中的过滤器).

查询结果:

"???????? ????????? ????????"@en    "???????? ????????"@en  "Nikolai Bukharin"@en
"Gamal Abdel Nasser Hussein"@en     "???? ??? ??????"@en    "Gamal Abdel Nasser"@en
Run Code Online (Sandbox Code Playgroud)

我查看了DBpedia页面,我看到有英文版的名称,但我不明白为什么过滤器不起作用!

有人可以帮助我吗?

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/property/>
SELECT DISTINCT ?person ?birthname ?nameExact ?label
where {

     ?person rdf:type dbpedia-owl:Person .
     ?person rdfs:label ?label .
     OPTIONAL { ?person dbpedia-owl:birthName ?birthname . }
     OPTIONAL { ?person dbpprop:name ?nameExact . }

     FILTER (lang(?birthname) = 'en')
     FILTER (lang(?label) = 'en')
     FILTER (lang(?nameExact) = 'en')

}
LIMIT 300
Run Code Online (Sandbox Code Playgroud)

sparql dbpedia

8
推荐指数
2
解决办法
1万
查看次数

sparql完全匹配正则表达式

我使用以下sparql查询从dbpedia中提取与特定信息框匹配的页面:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/property/>
PREFIX res:<http://dbpedia.org/resource/>
SELECT DISTINCT *
WHERE {
?page dbpedia:wikiPageUsesTemplate ?template .
?page rdfs:label ?label .
FILTER (regex(?template, 'Infobox_artist')) .
FILTER (lang(?label) = 'en')
}
LIMIT 100
Run Code Online (Sandbox Code Playgroud)

在这行查询中:

FILTER (regex(?template, 'Infobox_artist')) .
Run Code Online (Sandbox Code Playgroud)

我得到所有的信息框,从艺术家开始,作为artist_discography和其他我不需要的信息框.我的问题是:我怎样才能通过正则表达式获得完全匹配"infobox_artist"的信息框?

regex sparql

4
推荐指数
1
解决办法
6124
查看次数

标签 统计

sparql ×2

dbpedia ×1

regex ×1