wikidata 获取带有项目标签和值的所有属性

2024-06-28

我的问题是如何从 wikidata(最好是通过 SPARQL)提取在网页上呈现的所有属性及其各自的标签。

Google https://www.wikidata.org/wiki/Q95维基数据上的条目。对于属性 P414(证券交易所)或 P159,有 P969(位于街道地址)等子属性。一旦你真正出现,他们就会出现 wbgetentities作为预选赛。问题在于wbgetentities是标签丢失了。我得到了所需的输出(例如wdt:P17 => country => United States of America)使用以下 SPARQL 查询:

SELECT ?prop_id ?prop_label ?prop_val_label WHERE {
  VALUES (?company) {
    (wd:Q95)
  }
  ?company ?prop_id ?company_item.
  ?wd wikibase:directClaim ?prop_id.
  ?wd rdfs:label ?prop_label.
  OPTIONAL {
    ?company_item rdfs:label ?prop_val.
    FILTER((LANG(?prop_val)) = "en")
  }
  BIND(COALESCE(?prop_val, ?companyItem) AS ?prop_val_label)
  FILTER((LANG(?prop_label)) = "en")
}

但这些“子财产”缺失,因为它们没有被直接主张。要提取单个语句限定符,我可以这样做:

SELECT ?company ?hq ?country WHERE {
  wd:Q95 p:P159 ?company.
  OPTIONAL {
    ?company ps:P159 ?hq.
    ?company pq:P17 ?country. 
  }
}

但问题是是否有一种方法可以将所有内容合并到一个查询中?


维基数据数据模型的有用链接:

  • RDF 转储格式 https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format
  • 维基数据限定词、参考文献和排名 https://en.wikibooks.org/wiki/SPARQL/WIKIDATA_Qualifiers,_References_and_Ranks
  • 帮助:预选赛 https://www.wikidata.org/wiki/Help:Qualifiers

您的查询应该是这样的:

SELECT ?wdLabel ?ps_Label ?wdpqLabel ?pq_Label {
  VALUES (?company) {(wd:Q95)}

  ?company ?p ?statement .
  ?statement ?ps ?ps_ .

  ?wd wikibase:claim ?p.
  ?wd wikibase:statementProperty ?ps.

  OPTIONAL {
  ?statement ?pq ?pq_ .
  ?wdpq wikibase:qualifier ?pq .
  }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY ?wd ?statement ?ps_

Try it! https://query.wikidata.org/#SELECT%20%3FwdLabel%20%3Fps_Label%20%3FwdpqLabel%20%3Fpq_Label%20%7B%0A%20%20VALUES%20(%3Fcompany)%20%7B(wd%3AQ95)%7D%0A%20%20%0A%20%20%3Fcompany%20%3Fp%20%3Fstatement%20.%0A%20%20%3Fstatement%20%3Fps%20%3Fps_%20.%0A%20%20%0A%20%20%3Fwd%20wikibase%3Aclaim%20%3Fp.%0A%20%20%3Fwd%20wikibase%3AstatementProperty%20%3Fps.%0A%20%20%0A%20%20OPTIONAL%20%7B%0A%20%20%3Fstatement%20%3Fpq%20%3Fpq_%20.%0A%20%20%3Fwdpq%20wikibase%3Aqualifier%20%3Fpq%20.%0A%20%20%7D%0A%20%20%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%7D%0A%7D%20ORDER%20BY%20%3Fwd%20%3Fstatement%20%3Fps_

结果中仅包含限定符及其值。既不包含出处引用,也不包含值注释(例如时间精度)。如果您需要添加,请写评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wikidata 获取带有项目标签和值的所有属性 的相关文章

  • 在Firestore中管理createdAt时间戳

    每天我都会将产品从外部零售商进口到谷歌云Firestore https firebase google com docs firestore 数据库 在此过程中 产品可以是新的 新文档将添加到数据库中 或现有的 现有文档将在数据库中更新 应
  • 如何将 pyodbc 连接到 Access (.mdb) 数据库文件

    这是我尝试过的 通过搜索找到Vista的ODBC数据源管理器 添加新的文件数据源 选择 Microsoft Access 驱动程序 mdb 然后选择我感兴趣的 mdb 文件 从 python shell 导入 pyodbc 并尝试 pyod
  • 数据库设计 - 类别和子类别[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要在类似于黄金页面的东西上实现分类和子分类 假设我有下表 类别表 CategoryId Title 10 Home 20 Business
  • 在 SQL 数据库中存储自定义字段的首选方式是什么?

    我的朋友正在开发一款供不同独立医疗单位使用的产品 该数据库存储了在不同时间进行的大量测量数据 例如体温 血压等 让我们假设它们保存在一个名为的表中exams有柱子temperature pressure等 以及id patient id a
  • DBpedia SPARQL 过滤器并不适用于所有结果

    A FILTER NOT EXISTS与以下组合时允许某些结果通过OPTIONAL三倍 我的查询 SELECT DISTINCT WHERE en rdfs label N Djamena en BIND N Djamena AS name
  • 将 Wamp 服务器升级到 MySQL 8.0.15

    因此 我最近在几个月前安装了 WampServer 并预装了 mySQL 5 7 但我想利用 mySQL 8 附带的 NoSQL 功能 为了更新它 我下载了最新的MySQL版本 将文件夹解压到wamp64的bin目录中 然后 我从 5 7
  • InnoDB vs. MyISAM 插入查询时间

    我有一个大型 MySQL 表 约 1000 万行 6 5G 用于读取和写入 它是MyISAM 由于MyISAM 的所有表写入锁 我获得了很多锁 我决定尝试迁移到 InnoDB 推荐用于读 写表 它只锁定写入时的特定行 转换后 我测试了插入语
  • 有效存储和查询 GPS 坐标

    我想创建一个大型 GPS 坐标数据库 可以通过 返回 此坐标 n 米范围内的所有坐标 来查询该数据库 我需要它尽可能高效 因此循环遍历数据库中的所有坐标并计算坐标是否在 n 米内并不是理想的解决方案 有更简单的解决方案吗 Thanks 我通
  • 半透明数据库

    我正在构建一个包含健康信息的应用程序 这个面向消费者的应用程序对我来说是新的 我想要一种方法来完全消除隐私问题 当我回顾保护可公开访问的数据库中的敏感数据的方法时 我经常遇到数据库半透明的概念 有原书 http www wayner org
  • 通用 Oracle 数据收集存储

    我正在设计一个新的实验室数据库 我想将所有测试的原始结果存储在一起 在某些情况下 结果是单个值 然而 结果有时是原始波形或信号 下面哪种情况是理想的 以及为什么 或提供您自己的理想选择 选项 1 将每个单独的数据点存储为单独的结果行 距 t
  • 如何获取表中所有列的计数(*)?使用 PostgreSql

    我有一堆表 其中几个有数百列 我需要获取每列的非空值计数 并且我一直在手动执行此操作 我想找出一种方法来获取表中所有列的所有计数 我查了 stackoverflow 和 google 但找不到答案 我尝试了这个 但它只是为每列返回 1 的值
  • mysql字符串转换返回0

    why select aaa 0返回 1 真 如果我有一张像这样的桌子 userid pass user1 pas1 如果我查询 select from table where userid 0 and pass 0 它给了我所有的行 My
  • 可变字段数的数据库结构设计

    对于某种库存系统 用户可以创建一个item type它具有某些属性 现在每种类型的属性数量都是可变的 我应该如何使用 DBStructure 来解决这个问题 只需制作 X 份量propertyX领域 还是有其他方法可以以这种方式实现灵活性
  • 从 DBPedia 中提取基于日期/时间的谓词

    我想从 DBPedia 的转储文件中提取所有语句 是否可以编写 sparql 查询来提取包含日期值的谓词列表 如releaseDate deathDate birthDate 您可以编写一个 SPARQL 查询 您用 SPARQL 标记 因
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • 数据库(database/database.sqlite)不存在。来自工匠修补匠的数据库作品

    我在中创建了database sqlite文件database文件夹 我的 env文件内容是 DB CONNECTION sqlite DB HOST 127 0 0 1 DB PORT 3306 DB DATABASE absolute
  • 当 Firebase 数据库中的值发生更改时创建推送通知

    我想在 firebase 数据库中的值发生更改时向用户发送推送通知 这是我的数据库 Battles 00000111 062B3333 4046 4FB4 AA37 C2B05853E497 BattleProgress Player1 l
  • 如何高效地修剪数据

    我目前正在解决一个工作问题 我需要获取数据并根据用户定义的限制修剪生成的场景 我已经尝试了很多事情 但似乎无法让任何事情按照我想要的方式高效运行 我可能必须在数据库外部运行 以便可以扩展运行 但我认为如果可能的话 我应该尝试在数据库内部执行
  • 跨三个表的 LEFT JOIN(带有连接表)

    在Postgres中 有没有办法执行left join在由联结表链接的表之间 并在链接表上进行一些过滤 比如说 我有两张桌子 humans and pets 我想执行一个查询 其中包含人类 ID 和宠物名称 如果人类 ID 存在 但他们没有
  • 是否可以自定义keycloak使用的user_entity表?

    我正在尝试使用 keyCloak 进行 SSO 我在keycloak中设置了mysql而不是嵌入式h2数据库 然而 有一个问题 在udemy的讲座上 讲师告诉我们不建议直接处理db table 由keycloak创建 如果业务需求应用程序处

随机推荐