之后(GROUP_CONCAT无法获得单个结果

时间:2017-02-01 11:35:47

标签: sparql

我不太熟悉SPARQL,但我设法在https://query.wikidata.org

编写我自己的书籍及其类型,作者及其出生和死亡日期的查询。
SELECT
?title ?titleLabel 
(GROUP_CONCAT(DISTINCT(?authorLabel); separator="//") as ?authors)
(GROUP_CONCAT(DISTINCT(?dateborn); separator="//") as ?date_born)
(GROUP_CONCAT(DISTINCT(?datedeath); separator="//") as ?date_death)
(GROUP_CONCAT(DISTINCT(?datepub); separator="//") as ?date_pub)
(GROUP_CONCAT(DISTINCT(?genre_titleLabel); separator="//") as ?genre_title)
WHERE
{
?title wdt:P31 wd:Q571 .
?title wdt:P50 ?author . 
?title wdt:P577 ?date_pub .
?author wdt:P569 ?date_born .
?author wdt:P570 ?date_death .
?title wdt:P136 ?genre_title .
BIND(CONCAT(STR(DAY(?date_pub)),"-",STR(MONTH(?date_pub)),"-",STR(YEAR(?date_pub))) AS ?datepub )
BIND(CONCAT(STR(DAY(?date_born)),"-",STR(MONTH(?date_born)),"-",STR(YEAR(?date_born))) AS ?dateborn )
BIND(CONCAT(STR(DAY(?date_death)),"-",STR(MONTH(?date_death)),"-",STR(YEAR(?date_death))) AS ?datedeath ) 
FILTER (?date_born > "1900-01-01T00:00:00Z"^^xsd:dateTime) .
FILTER (?date_born < "1905-12-31T23:59:59Z"^^xsd:dateTime)
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
?title rdfs:label ?titleLabel .
?author rdfs:label ?authorLabel .
?date_pub rdfs:label ?date_pubLabel .
?date_born rdfs:label ?date_bornLabel .
?date_death rdfs:label ?date_deathLabel .
?genre_title rdfs:label ?genre_titleLabel .
}
}
GROUP BY ?title ?titleLabel

它有效,我在同一领域得到所有类型。我能得到这个的唯一方法是

(GROUP_CONCAT(DISTINCT(

代表日期。但是如果你在结果中徘徊,就会有多个日期的记录。我想只得到第一个日期,而不是数据库中所有存储日期的记录,但我不能。

例如,如果我要求

?dateborn 

而不是

(GROUP_CONCAT(DISTINCT(?dateborn); separator="//") as ?date_born)

我收到错误。你知道我的错误在哪里吗?

迎接

<磷>氮

0 个答案:

没有答案