Sparql 使用termStart和termEnd查询DBpedia中的政府办公室标题筛选器

Sparql 使用termStart和termEnd查询DBpedia中的政府办公室标题筛选器,sparql,dbpedia,virtuoso,Sparql,Dbpedia,Virtuoso,目标:获取某一年具有政府职位头衔的人员的DBpedia资源。例如1998年的美国总统,康涅狄格州纽黑文市现任市长等 在查看了总统巴拉克·奥巴马、市长托尼·哈普和其他一些人的DBpedia资源页面后,我发现唯一一致提供的信息是属性termStart和termEnd。问题在于termStart和termsend包含多个条目,因此使用它们也会包含不正确的资源页面。我不知道如何区分正确和错误。 对于这种性质的查询,应该很容易获得结果,这似乎很简单。如果使用的是freebase,但freebase不是最新

目标:获取某一年具有政府职位头衔的人员的DBpedia资源。例如1998年的美国总统,康涅狄格州纽黑文市现任市长等

在查看了总统巴拉克·奥巴马、市长托尼·哈普和其他一些人的DBpedia资源页面后,我发现唯一一致提供的信息是属性
termStart
termEnd
。问题在于
termStart
termsend
包含多个条目,因此使用它们也会包含不正确的资源页面。我不知道如何区分正确和错误。
对于这种性质的查询,应该很容易获得结果,这似乎很简单。如果使用的是
freebase
,但
freebase
不是最新的,则对纽黑文市长的查询返回空

下面是我对1998年美国总统使用Virtuoso的提问

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) .
}
前缀foaf:
前缀dcterms:
前缀道具:
前缀dbpedia owl:
选择不同的s?w?dstart?dend
在哪里{
?s dcterms:主题。
w foaf:主要主题。
?s道具:termStart?dstart。
?s道具:终端?dend。
过滤器(?dstart<'1998-01-01'^^xsd:date&&dend>'1998-12-31'^^xsd:date)。
}
我得到的结果是巴拉克·奥巴马、比尔·克林顿、乔治·W·布什和威廉·霍华德·塔夫脱。塔夫脱总统被包括在内,因为结束日期是1892年3月,我认为这是可以确定的。然而,我不知道剩下的3个中哪一个是正确的。请记住,如果我更改上述类别,我将获得不同的职称。例如纽黑文的市长、康涅狄格州的市长或加利福尼亚州的州长等

如果我知道
类别之后的字符串:
是正确的,但不知道它是什么,我是否可以获得正确的结果?或者在特定日期是否有任何政府职位所有权持有人的查询?

在SPARQL中:

"March 1892"@en > '1998-12-31'^^xsd:date
是比较错误(值空间不兼容),因此筛选器为false


此外,数据看起来很奇怪,例如:比尔·克林顿的总统任期是1993年1月20日至2001年1月20日(根据维基百科网页),但结果中有多个条目,其中的数据集到处都是。

DBpedia现在有点不稳定,但根据数据,我猜这是因为克林顿担任过多个办公室,每个都有一个开始和结束日期。我是语义网、freebase和DBpedia的新手。当我看到结果时,我意识到关于日期比较的问题,正如我上面所说的,这是可以解决的。结果对我来说似乎是一个交叉连接。我现在明白了,也许我可以使用属性“继任者”和/或“前置者”来获得单个结果。