【发布时间】:2021-07-01 06:36:29
【问题描述】:
我正在尝试创建一个 wiki 数据 SPARQL 查询。我想要做的是从某些属性中获取多个项目 例如: 我正在尝试获取具有统计包实例属性的所有数据。 但我面临的问题是,例如,社会科学统计软件包具有属性类型 348,它有多个版本。如果版本也有发布日期,我想获取所有这些版本以及发布日期。 我阅读了一些文档并尝试创建一个查询,但我无法从属性 p:348 获取所有版本。
SELECT ?software ?softwareLabel ?developerLabel ?versionLabel ?date
WHERE
{
?software wdt:P31 wd:Q13199995 .
OPTIONAL { ?software wdt:P178 ?developer. }
OPTIONAL { ?software wdt:P348 ?version. }
OPTIONAL {
FILTER EXISTS {
?software wdt:P348 ?version2.
FILTER ( ?version != ?version2 )
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}
这里我附上了我用来获取所有必需信息的查询。 我真的被这个问题困住了。如果能提供任何帮助,我将不胜感激。
【问题讨论】:
-
SELECT ?software ?softwareLabel ?developerLabel ?versionLabel ?date WHERE { ?software wdt:P31 wd:Q13199995 . OPTIONAL { ?software wdt:P178 ?developer. } OPTIONAL { ?software p:P348 ?stmt . ?stmt ps:P348 ?version. OPTIONAL {?stmt pq:P577 ?date }} SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". } } -
非常感谢。你很棒!你也可以帮我查询 dbpedia 吗?我想要多个版本,如果发布日期也可用,我的查询是 select distinct ?software ,?name, ?date , ?version where { ?software rdf:type dbo:Software.过滤器不存在 {?software rdf:type dbo:VideoGame} 可选 {?software foaf:name ?name.} 可选{ ?software rdfs:label ?label.过滤器(LANG(?标签)='en')。 }。可选 {?software dbo:latestReleaseDate ?date。 } 可选 {?software dbo:latestReleaseVersion ?version。 } }
-
嗯,你检查过任何数据吗?我的意思是,看看dbpedia.org/page/ACIS,确实只有一个版本。考虑到该属性称为“latestReleaseVersion”,这也很明显,不是吗?根据我的经验,DBpedia 不擅长对历史数据进行建模,并且数据通常是到 Wikipedia 信息框的映射,请参阅en.wikipedia.org/wiki/ACIS - 仅保留最新版本
-
Sparkql 不是 SQL,所以我去掉了 SQL 标签。
-
@AbdulMuqeet
UNION或VALUES是你的朋友:SELECT ?software ?softwareLabel ?developerLabel ?versionLabel ?date WHERE { VALUES ?type {wd:Q7397 wd:Q13199995 wd:Q166142} ?software wdt:P31 ?type OPTIONAL { ?software wdt:P178 ?developer. } OPTIONAL { ?software p:P348 ?stmt. ?stmt ps:P348 ?version. OPTIONAL { ?stmt pq:P577 ?date. } } SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". } }
标签: database sparql wikidata pywikibot