在 dbpedia 上设置 SPARQL 搜索名人时遇到问题
Trouble with setting up a SPARQL search for celebrities on dbpedia
我目前正在 python 从事一个项目,我想在其中编写大量荷兰新闻文章。我想扫描这些文章的新闻价值,其中包括名人新闻。为此,我希望我们 dbpedia 创建一个 singers/actors/tv personalities/otherwise 'famous' 人的列表,以便在我的报纸文章中查找这些名字。
因此,我正在寻找一种方法来设置生成名人姓名列表的 SPARQL 查询。我发现,例如在音乐家的情况下,我正在寻找的 OWL 应该是 thing->person->artist->musical artist(例如),但我不知道如何到达那里。如果我能在给定的 OntologyClass 中获得维基百科文章的标题列表(例如,音乐艺术家或名人),最好是 .json 文件格式(据我了解,这是一种受支持的文件格式)。
显然,我已经尝试自己设置 SPARQL 搜索,但到目前为止,我只收到错误消息(老实说,我无法真正理解)而不是我正在寻找的结果.谁能告诉我如何设置如上所述的 sparql 查询(返回给定 ontology class 中的姓名列表)或者我如何才能检索这样的人员列表?
想顺便查询荷兰语版的dbpedia,http://nl.dbpedia.org
很遗憾,我只走到这一步:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?name WHERE {
?label owl:type :MusicalArtist
}
您的查询
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?name WHERE {
?label owl:type :MusicalArtist
}
这有很多问题,其中一些会被端点或查询验证器检测到。您在 :MusicalArtist 中使用前缀 :,但您没有定义它。使用您的前缀,应该是 dbpedia-owl:MusicalArtist。没有owl:type 属性;您需要 rdf:type,在 SPARQL 查询中可以缩写为 a(如 "find ?artist such that is a musical artist")。
怎么做
我可能会使用如下查询。这里有一些您可能需要做一些研究才能理解的内容,例如 ; 符号,使用 langMatches 和 lang 和投影中的 str,但这些都非常简单,可以通过查看您可以在网上找到的其他查询来理解(例如,在 Stack Overflow 上),或通过咨询 SPARQL 1.1 specification. This query works on the standard DBpedia endpoint at http://dbpedia.org/sparql
select (str(?name_) as ?name) {
?artist a dbo:MusicalArtist ;
rdfs:label ?name_ .
filter langMatches(lang(?name_), "en")
}
要获得 JSON 中的结果,您可以 select "JSON" 作为端点处的结果类型,您将获得一个内容如下的文件:
{ "head": { "link": [], "vars": ["name"] },
"results": { "distinct": false, "ordered": true, "bindings": [
{ "name": { "type": "literal", "value": "AK 47 Mayanja" }},
{ "name": { "type": "literal", "value": "AR-Ab" }},
{ "name": { "type": "literal", "value": "A Pass" }},
...
{ "name": { "type": "literal", "value": "Vance Joy" }},
{ "name": { "type": "literal", "value": "Vince Gill" }},
{ "name": { "type": "literal", "value": "Wayne Hussey" }} ] } }
要在 Dutch DBpedia 端点上使用它,您需要定义那里没有预定义的 dbo: 前缀。此外,语言过滤可能无济于事,因为可能没有那么多英语结果。因此你可能会得到类似的结果:
prefix dbo: <http://dbpedia.org/ontology/>
select (str(?name_) as ?name) {
?artist a dbo:MusicalArtist ;
rdfs:label ?name_ .
}
我目前正在 python 从事一个项目,我想在其中编写大量荷兰新闻文章。我想扫描这些文章的新闻价值,其中包括名人新闻。为此,我希望我们 dbpedia 创建一个 singers/actors/tv personalities/otherwise 'famous' 人的列表,以便在我的报纸文章中查找这些名字。
因此,我正在寻找一种方法来设置生成名人姓名列表的 SPARQL 查询。我发现,例如在音乐家的情况下,我正在寻找的 OWL 应该是 thing->person->artist->musical artist(例如),但我不知道如何到达那里。如果我能在给定的 OntologyClass 中获得维基百科文章的标题列表(例如,音乐艺术家或名人),最好是 .json 文件格式(据我了解,这是一种受支持的文件格式)。
显然,我已经尝试自己设置 SPARQL 搜索,但到目前为止,我只收到错误消息(老实说,我无法真正理解)而不是我正在寻找的结果.谁能告诉我如何设置如上所述的 sparql 查询(返回给定 ontology class 中的姓名列表)或者我如何才能检索这样的人员列表?
想顺便查询荷兰语版的dbpedia,http://nl.dbpedia.org
很遗憾,我只走到这一步:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?name WHERE {
?label owl:type :MusicalArtist
}
您的查询
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?name WHERE {
?label owl:type :MusicalArtist
}
这有很多问题,其中一些会被端点或查询验证器检测到。您在 :MusicalArtist 中使用前缀 :,但您没有定义它。使用您的前缀,应该是 dbpedia-owl:MusicalArtist。没有owl:type 属性;您需要 rdf:type,在 SPARQL 查询中可以缩写为 a(如 "find ?artist such that is a musical artist")。
怎么做
我可能会使用如下查询。这里有一些您可能需要做一些研究才能理解的内容,例如 ; 符号,使用 langMatches 和 lang 和投影中的 str,但这些都非常简单,可以通过查看您可以在网上找到的其他查询来理解(例如,在 Stack Overflow 上),或通过咨询 SPARQL 1.1 specification. This query works on the standard DBpedia endpoint at http://dbpedia.org/sparql
select (str(?name_) as ?name) {
?artist a dbo:MusicalArtist ;
rdfs:label ?name_ .
filter langMatches(lang(?name_), "en")
}
要获得 JSON 中的结果,您可以 select "JSON" 作为端点处的结果类型,您将获得一个内容如下的文件:
{ "head": { "link": [], "vars": ["name"] },
"results": { "distinct": false, "ordered": true, "bindings": [
{ "name": { "type": "literal", "value": "AK 47 Mayanja" }},
{ "name": { "type": "literal", "value": "AR-Ab" }},
{ "name": { "type": "literal", "value": "A Pass" }},
...
{ "name": { "type": "literal", "value": "Vance Joy" }},
{ "name": { "type": "literal", "value": "Vince Gill" }},
{ "name": { "type": "literal", "value": "Wayne Hussey" }} ] } }
要在 Dutch DBpedia 端点上使用它,您需要定义那里没有预定义的 dbo: 前缀。此外,语言过滤可能无济于事,因为可能没有那么多英语结果。因此你可能会得到类似的结果:
prefix dbo: <http://dbpedia.org/ontology/>
select (str(?name_) as ?name) {
?artist a dbo:MusicalArtist ;
rdfs:label ?name_ .
}