我通过在端点上使用"联合" http://de.dbpedia.org/sparql面对奇怪的行为。通过使用
SELECT distinct *
WHERE {
{
?name dcterms:subject category-de:Haus_Liechtenstein.
?name rdf:type foaf:Person.
?name <http://dbpedia.org/ontology/birthDate> ?birthdate.
Optional {?name dbpedia-owl:deathDate ?deathDate.}
Optional {?name <http://de.dbpedia.org/property/gnd> ?gnd.}
}
filter (!bound(?deathDate))
}
Order BY ASC (?birthdate)
例如,"玛丽·金斯基(Marie Kinsky)"的生日是" 1940-04-14Z",这是正确的(第一行)。当我现在添加与Union的第二个来源时:
SELECT distinct *
WHERE {
{
?name dcterms:subject category-de:Haus_Liechtenstein.
?name rdf:type foaf:Person.
?name <http://dbpedia.org/ontology/birthDate> ?birthdate.
Optional {?name dbpedia-owl:deathDate ?deathDate.}
Optional {?name <http://de.dbpedia.org/property/gnd> ?gnd.}
}
union{
SERVICE silent <http://dbpedia.org/sparql>{
?name dcterms:subject category-en:Princely_Family_of_Liechtenstein.
?name rdf:type foaf:Person.
?name dbpprop:father ?father.
?name dbpprop:mother ?mother.
?name dbpprop:birthDate ?birthdate.
Optional{?name dbpedia-owl:spouse ?spouse.}
Optional{?name dbpprop:shortDescription ?title.}
Optional{?name dbpedia-owl:individualisedGnd ?gnd.}
Optional {?name dbpedia-owl:deathDate ?deathDate.}
}}
filter (!bound(?deathDate))
}
Order BY ASC (?birthdate)
然后,我获得了"玛丽"的生日," 1940-04-13 02:00"是错误的(第一行)。通过手动检查日期玛丽,生日是" 1940-04-14"。
有人可以向我解释这种行为吗?
预先感谢您和最好的问候fobi
在http://de.dbpedia.org/sparql:
上尝试以下查询(您的原始版本非常剪切)PREFIX category-en: <http://dbpedia.org/resource/Category:>
SELECT distinct *
WHERE {
SERVICE silent <http://dbpedia.org/sparql> {
?name dcterms:subject category-en:Princely_Family_of_Liechtenstein.
?name dbpprop:birthDate ?birthdate.
}
}
请注意,每个日期都有这种可疑的时区偏移,玛丽有1940-04-13+02:00
。
现在在http://dbpedia.org/sparql上尝试以下内容:
PREFIX category-en: <http://dbpedia.org/resource/Category:>
SELECT distinct *
WHERE {
?name dcterms:subject category-en:Princely_Family_of_Liechtenstein.
?name dbpprop:birthDate ?birthdate.
}
现在我看到玛丽有生日1940-04-14+02:00
!
我想知道dbpedia端点是否试图根据客户的位置进行时区校正?但这确实不是正确的。
(不仅是列支敦士登皇室,大多数出生日期都有此功能)
更新:
从dbpedia邮件列表中:
我们最近认识到DBPEDIA的日期不一致 SPARQL端点: SPARQL端点中的日期为时区为 02:00 在转储中,它们不是。
[...]
这很可能是勇士的问题,已经存在一个问题 2011年在Virtuoso-users邮寄列表上提出