从维基数据中获取可读的结果



我想从维基数据中获取关于电影的信息,以这个电影为例:https://www.wikidata.org/wiki/Q24871

在页面上,数据以可读的格式清楚地显示,但是当您试图通过API提取它时,您会得到这个:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q24871

下面是其中的一段:

"P272": [
                {
                    "id": "q24871$4721C959-0FCF-49D4-9265-E4FAC217CB6E",
                    "mainsnak": {
                        "snaktype": "value",
                        "property": "P272",
                        "datatype": "wikibase-item",
                        "datavalue": {
                            "value": {
                                "entity-type": "item",
                                "numeric-id": 775450
                            },
                            "type": "wikibase-entityid"
                        }
                    },
                    "type": "statement",
                    "rank": "normal"
                },
                {
                    "id": "q24871$31777445-1068-4C38-9B4B-96362577C442",
                    "mainsnak": {
                        "snaktype": "value",
                        "property": "P272",
                        "datatype": "wikibase-item",
                        "datavalue": {
                            "value": {
                                "entity-type": "item",
                                "numeric-id": 3041294
                            },
                            "type": "wikibase-entityid"
                        }
                    },
                    "type": "statement",
                    "rank": "normal"
                },
                {
                    "id": "q24871$08009F7A-8E54-48C3-92D9-75DEF4CF3E8D",
                    "mainsnak": {
                        "snaktype": "value",
                        "property": "P272",
                        "datatype": "wikibase-item",
                        "datavalue": {
                            "value": {
                                "entity-type": "item",
                                "numeric-id": 646968
                            },
                            "type": "wikibase-entityid"
                        }
                    },
                    "type": "statement",
                    "rank": "normal"
                },
                {
                    "id": "q24871$CA53B5EB-1041-4701-A36E-7C348FAC984E",
                    "mainsnak": {
                        "snaktype": "value",
                        "property": "P272",
                        "datatype": "wikibase-item",
                        "datavalue": {
                            "value": {
                                "entity-type": "item",
                                "numeric-id": 434841
                            },
                            "type": "wikibase-entityid"
                        }
                    },
                    "type": "statement",
                    "rank": "normal",
                    "references": [
                        {
                            "hash": "50f57a3dbac4708ce4ae4a827c0afac7fcdb4a5c",
                            "snaks": {
                                "P143": [
                                    {
                                        "snaktype": "value",
                                        "property": "P143",
                                        "datatype": "wikibase-item",
                                        "datavalue": {
                                            "value": {
                                                "entity-type": "item",
                                                "numeric-id": 11920
                                            },
                                            "type": "wikibase-entityid"
                                        }
                                    }
                                ]
                            },
                            "snaks-order": [
                                "P143"
                            ]
                        }
                    ]
                }
            ],

问题是我不确定如何将这样的部分转换为可读的文本。我得到的API是调用类和它的属性之间的链接使用唯一的id,但我仍然卡住了。

这在目前是可能的还是我找错对象了?

您应该寻找的是每个语句中的numeric-id s,并添加一个领先的Q来恢复您的维基数据id,这应该导致['Q775450', 'Q3041294', 'Q646968', 'Q434841', 'Q11920']

[update:您现在可以直接访问mainsnak.datavalue.value.id的Q id,而不必从numeric-id构建它]

这可以使用wikibase-sdk(我开发的JS库)wbk.simplify.claims函数

一旦你得到了这些id,你只需要使用wbgetentities API请求实体标签:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels

您甚至可以使用languages参数获得某些语言的结果:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels&languages=en|de|fr

我看到了一个被接受的答案,但最初对这个问题的理解不同。基本上要求在维基数据项页面上看到相同的JSON输出。

SPARQL查询与JSON输出上述情况:https://query.wikidata.org/sparql?query=SELECT%20%3FwdLabel%20%3Fps_Label%20%3FwdpqLabel%20%3Fpq_Label%20%7B%0A%20%20VALUES%20 (% 3 fcompany) % 20% 7 b (wd % 3 aq24871) % 7 d % 0 a % 0 3 fcompany % % 20% 20% 20% 3 fp % 20% 3 fstatement % 0 3 fstatement % % 20% 20% 20% 20.% 3 fps % 3 fps_ 20% % % 0 a % 0 20.% 20% 20% 3 fwd % 20 wikibase % 3 aclaim % 20% 3 fp. % 0 a % 20% 20% 3 fwd % 20 wikibase % 3 astatementproperty % 20% 3 fps. % 0 20% % 0 a % 20选7 b % 0 a % % 20% 20% 20% 3 fstatement % 20% 3 fpq 3 fpq_ % 0 20.% % % 20% 20% 20% 3 fwdpq % 20 wikibase % 3 aqualifier % 20% 3 fpq % 0 20.% % 20% 20% 7 d % 0 a % % 2 0 20% % 20服务0 wikibase % 3 alabel % 20% 7 b % 20 bd % 3 aserviceparam % 20 wikibase % 3 alanguage % 22 en 20% % 22% 20% 7 d % 0 a % 7 d&格式= json

我使用Wikidata查询前端来直接查询并检查结果。然后使用</> Code按钮…解释为什么你在上面看到这么多不必要的空白。

参见:

  • wikidata获取项目的标签和值的所有属性
  • SPARQL查询服务-接口

好的,所以我还没有找到一个解决方案来使用这是" wbgetenties "系统,我发现你可以使用"parse"命令来获取html结构。

https://www.wikidata.org/w/api.php?action=parse&页面= Q24871

虽然它仍然需要一些处理,但它比以前的解决方案容易得多。

相关内容

  • 没有找到相关文章

最新更新