我试图让所有城市都有一位女市长,但是我的问题是,大多数市长如果在数据中被标记为他们大多与人没有联系,他们只会以字符串形式给出。那么我该如何获得性别。

我要求所有市长的命令是:

SELECT * WHERE {
 ?city a dbo:City .
 ?city dbo:populationTotal ?pop .
 ?city (dbp:mayor | dbo:mayor | dbp:leader |dbo:leader) ?mayor

}
ORDER BY DESC(?pop)


我不确定是否会得到所有市长,因为市长只有500个,而19584个城市的人口却很少。

由于我没有通过这种方式获得性别的原因,我再次请求将DBpedia中的所有女性都接受,并尝试比较两种结果,但大多数结果都是超时或“无结果”

在示例命令超时中运行是:

SELECT ?name ?sayor WHERE {
 ?person a dbo:Person .
 ?person foaf:gender ?gender .
 FILTER regex(?gender, "^female$", "i") .
 ?person rdfs:label ?name .
 {
  SELECT str(?mayor) AS ?sayor WHERE {
   ?city a dbo:City .
   ?city (dbp:mayor | dbp:leader) ?mayor .
   FILTER (str(?mayor) = str(?name))
  }
 }
}


有谁想让所有城市都有女市长?我也很高兴受到一些刺激。

最佳答案

这是一个由于多个因素而引起的特殊问题。这里主要两个:

dbo:Settlement的尴尬属性结构:
Wikipedia模板信息框解决方案的信息框没有直接的领导者/市长属性。由于创建这些模板时并未考虑清楚的对象结构,因此领导者属性在此模板中被展平为:

| leader_title = [[Mayor of Chicago|Mayor]]
| leader_name = [[Rahm Emanuel]]
| leader_party = [[Democratic Party (United States)|D]]
| leader_title1 = [[City council|Council]]
| leader_name1 = [[Chicago City Council]]


这使编辑人员没有真正的选择,只能“滥用” leader_name属性,而不是放下名称文字,而是指向相关资源(人)。不同的Infobox模板具有市长/领导者属性,但这是英语Wikipedia中最常用于描述城市的模板。

其次,DBpedia映射的行为非常僵化,在处理Infobox属性(可能是文字链接或资源链接)时遇到了问题。至少地图编辑者很难解决这个问题。 DBpedia现在通过引入RML mappings处理这个(以及其他问题)。

当然,这在其他dbo类中也可能以类似的方式出现。当DBpedia正在研究此类问题时,从Wikipedia模板到DBpedia本体的最新映射是解决此问题的一种方法,任何人都可以contribute这样做。

考虑到这一点,我们可以解决您的起源问题:

SELECT * WHERE {
   ?plebs rdfs:subClassOf dbo:Settlement.
   ?city a ?plebs .
   ?city (dbp:mayor | dbo:mayor | dbp:leader |dbo:leader | dbo:leaderName) ?mayor .
   ?mayor foaf:gender ?gender.
   ?city dbo:populationTotal ?pop .
   FILTER(str(?gender) = "female")
  }
ORDER BY DESC(?pop)


这导致前三名:

http://dbpedia.org/resource/Tokyo   http://dbpedia.org/resource/Yuriko_Koike
"female"@en    13617445
http://dbpedia.org/resource/Mumbai  http://dbpedia.org/resource/Snehal_Ambekar
"female"@en    12442373
http://dbpedia.org/resource/Yuncheng    http://dbpedia.org/resource/Wang_Yuyan
"female"@en    5134779


这似乎对我来说是正确的。

08-25 00:04