【问题标题】:Sparql Query for wikidata to get multiple values from propertySparql 查询维基数据以从属性中获取多个值
【发布时间】: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 UNIONVALUES 是你的朋友: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


【解决方案1】:

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]". } }

【讨论】:

    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2016-10-26
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多