目标:获取特定年份拥有政府职位的人员的DBpedia资源。例如1998年的美国总统,现任纽黑文市长,康涅狄格州等等......
在查看总统巴拉克·奥巴马,市长托尼·哈普和其他一些人的DBpedia资源页面后,我发现唯一一致提供的信息是属性termStart
和termEnd
。问题是termStart
和termEnd
包含多个条目,因此使用它们还将包含不正确的资源页面。我不知道如何区分正确与错误
看起来非常简单,人们应该很容易获得这种性质的查询结果。如果使用freebase
,但freebase
不是最新的,那么对纽黑文Mayor的查询将返回空。
以下是我使用Virtuoso在1998年对美国总统的询问
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX prop: <http://dbpedia.org/property/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?s ?w ?dstart ?dend
WHERE {
?s dcterms:subject <http://dbpedia.org/resource/Category:Presidents_of_the_United_States> .
?w foaf:primaryTopic ?s .
?s prop:termStart ?dstart .
?s prop:termEnd ?dend .
FILTER (?dstart < '1998-01-01'^^xsd:date && ?dend > '1998-12-31'^^xsd:date) .
}
我得到的结果是巴拉克奥巴马,比尔克林顿,乔治W.布什和威廉霍华德塔夫脱。塔夫脱总统被列入,因为结束日期是1892年3月,我认为可以修复。但是,我不知道剩下的3个中哪一个是正确的。请记住,如果我更改上面的类别,我会得到不同的办公室标题。例如Mayors_of_New_Haven_,Connecticutts或Governors_of_California等...
无论如何,只有在Category:
正确但不知道它是什么之后我才能知道字符串时,我才能获得正确的结果?或者,无论如何要在某个日期查询任何政府办公室职称持有人?
答案 0 :(得分:2)
在SPARQL中:
"March 1892"@en > '1998-12-31'^^xsd:date
是比较错误(值空间不兼容),因此过滤器为false。
此外 - 数据看起来很奇怪例如:比尔克林顿当时的总统是1993年1月20日到2001年1月20日(根据维基百科页面)但结果有多个条目与dstart到处都有。