SPARQL:dbpedia 上的联合更改生日
SPARQL: union on dbpedia changes birthdate
我在端点 http://de.dbpedia.org/sparql 上使用 "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.}
}
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)
然后我得到 "Marie" 的出生日期为“1940-04-13+02:00”,这是错误的(第一行)。通过手动检查日期Marie,生日是“1940-04-14”。
谁能给我解释一下这种行为?
提前致谢并致以最诚挚的问候
福比
在 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.
}
}
请注意,每个日期都有这种可疑的时区偏移,而 Marie 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 端点是否正在尝试根据客户端的区域设置进行时区更正?但它确实不正确。
(不仅仅是列支敦士登皇室,大多数出生日期都有这个特征)
更新:
We recently recognized that there are inconsistencies with dates in the DBpedia
Sparql endpoint:
dates in the SPARQL endpoint are timezoned +02:00 while on the DBpedia pages
and in the dumps they are not.
[...]
That is most probably an issue of Virtuoso and there already was an issue
raised in 2011 on the virtuoso-users mailing list
我在端点 http://de.dbpedia.org/sparql 上使用 "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.}
}
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)
然后我得到 "Marie" 的出生日期为“1940-04-13+02:00”,这是错误的(第一行)。通过手动检查日期Marie,生日是“1940-04-14”。
谁能给我解释一下这种行为?
提前致谢并致以最诚挚的问候 福比
在 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.
}
}
请注意,每个日期都有这种可疑的时区偏移,而 Marie 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 端点是否正在尝试根据客户端的区域设置进行时区更正?但它确实不正确。
(不仅仅是列支敦士登皇室,大多数出生日期都有这个特征)
更新:
We recently recognized that there are inconsistencies with dates in the DBpedia Sparql endpoint: dates in the SPARQL endpoint are timezoned +02:00 while on the DBpedia pages and in the dumps they are not.
[...]
That is most probably an issue of Virtuoso and there already was an issue raised in 2011 on the virtuoso-users mailing list