丰富任何符合 OCDM 的知识图谱、查找新标识符和去重实体的工具
项目描述
图形丰富器
丰富任何符合OCDM的知识图谱、查找新标识符和去重实体的工具。
目录
关于该项目
该工具分为两部分:一个 Enricher 组件负责查找新标识符并将它们添加到图集中,以及一个 InstanceMatching 组件负责对任何共享相同标识符的实体进行重复数据删除。
丰富者
丰富器迭代图表集中包含的每个书目资源 (BR)。对于每个书目资源 (BR)(避免问题和期刊),获取图表集中已经包含的标识符列表,并检查它是否已经具有 DOI、ISSN 和 Wikidata ID:
- 如果指定了 ISSN,则查询 Crossref 以提取其他 ISSN
- 如果没有 DOI,它会通过提取的所有其他数据查询 Crossref 以获取一个
- 如果没有 Wikidata ID,它会通过所有其他标识符查询 Wikidata 以获取一个
找到的任何新标识符都将添加到书目资源 (BR)。
然后,对于与书目资源 (BR) 相关的每个代理角色 (AR),获取已包含在其链接的责任代理 (RA) 中的所有标识符的列表,并且:
- 如果没有 ORCID,则查询 ORCID 以获取它
- 如果没有 VIAF,则查询 VIAF 以获取它
- 如果没有 Wikidata ID,它通过所有其他标识符查询 Wikidata 以获取一个
- 如果责任代理 (RA) 与发布者相关,它会通过其 DOI 查询 Crossref 以获取其 ID
找到的任何新标识符都将添加到与 AR 相关的 RA。
最后,它将存储一个新的图集及其出处。
注意:即使不可能为同一实体重复标识符,也有可能在整个图形集中您可以找到共享相同架构和文字的不同标识符。为此,您应该在丰富图形集之后使用instancematching模块。
API 和标识符
实际上有 4 个外部 API 涉及:
- 交叉引用
- 兽人
- VIAF
- 维基数据
我们可以发现以下标识符:
- DOI
- ISSN
- Crossref 的发布者 ID
- 兽人
- VIAF
- Wikidata ID(通过任何其他标识符,例如:PMID、VIAF、DOI...)
无论如何,扩展类 QueryInterface 以添加任何其他有用的 API 是可能的。
实例匹配
实例匹配过程分为三个连续步骤:
- 匹配责任代理 (RA)
- 匹配书目资源 (BR)
- 匹配 ID
匹配责任代理 (RA)
发现所有共享相同标识符文字的责任代理 (RA),并创建它们的图表。然后将每个连接的组件(由相同标识符链接的责任代理 (RA) 集群)合并为一个。对于将要合并的每一对责任代理 (RA),通过从其引用的每个代理角色 (AR) 中删除责任代理 (RA) 来替换将不再存在的责任代理 (RA) 的引用并添加,而不是合并的)
如果将不再存在的代理角色 (AR) 链接的责任代理 (RA) 未与任何其他代理角色 (AR) 链接,则将其标记为删除,否则不标记。
最后,在图集中生成出处并提交待处理的更改
匹配书目资源 (BR)
发现所有共享相同标识符文字的书目资源 (BR),创建它们的图表。然后将每个连接的组件(由相同标识符链接的书目资源(BR)集群)合并为一个。对于将要合并的每一对书目资源 (BR),还要合并:
- 他们的容器通过匹配正确的类型(BR1问题-> BR2问题)
- 他们的出版商
最后,在图集中生成出处并提交待处理的更改
匹配 ID
发现所有共享相同架构和文字的 ID,然后将所有 ID 合并为一个,并将所有引用替换为合并后的 ID。
最后,在图集中生成出处并提交待处理的更改
入门
要启动并运行本地副本,请执行以下简单步骤:
- 安装 python >= 3.8:
sudo apt install python3
- 通过 pip 安装 oc_graphenricher:
pip install oc-graphenricher
从源安装
- 已经安装了 python,你还可以通过克隆这个存储库来安装 GraphEnricher:
git clone https://github.com/opencitations/oc_graphenricher`
cd ./oc_graphenricher
- 安装诗歌:
pip install poetry
- 安装所有依赖项:
poetry install
- 构建包:
poetry build
- 安装软件包:
pip install ./dist/oc_graphenricher-<VERSION>.tar.gz
- 运行测试(从项目的根目录):
poetry run test
用法
它应该只接受图形集对象。创建一个:
g = Graph()
g = g.parse('../data/test_dump.ttl', format='nt11')
reader = Reader()
g_set = GraphSet(base_iri='https://w3id.org/oc/meta/')
entities = reader.import_entities_from_graph(g_set, g, enable_validation=False, resp_agent='https://w3id.org/oc/meta/prov/pa/2')
丰富
此时,运行浓缩阶段:
from oc_graphenricher.enricher import Enricher
enricher = GraphEnricher(g_set)
enricher.enrich()
您将看到进度条,其中包含所需时间的估计以及每个充实的书目资源 (BR) 所花费的平均时间。
重复数据删除
然后,序列化丰富的图集,并将其作为
g_set对象再次读取,运行重复数据删除步骤:
from oc_graphenricher.instancematching import InstanceMatching
matcher = InstanceMatching(g_set)
matcher.match()
match 方法将按顺序运行:
- 负责代理 (RA) 的重复数据删除
- 书目资源(BR)的重复数据删除
- 标识符 (ID) 的重复数据删除
- 保存到文件
如果需要,您还可以相互独立地对其中一个进行重复数据删除。
对责任代理 (RA) 进行重复数据删除:
from oc_graphenricher.instancematching import InstanceMatching
matcher = InstanceMatching(g_set)
matcher.instance_matching_ra()
matcher.save()
要对书目资源 (BR) 进行重复数据删除:
from oc_graphenricher.instancematching import InstanceMatching
matcher = InstanceMatching(g_set)
matcher.instance_matching_br()
matcher.save()
要对标识符 (ID) 进行重复数据删除:
from oc_graphenricher.instancematching import InstanceMatching
matcher = InstanceMatching(g_set)
matcher.instance_matching_id()
matcher.save()
执照
根据 ISC 许可分发。有关LICENSE更多信息,请参阅。
接触
Gabriele Pisciotta - @GaPisciotta - ga.pisciotta@gmail.com
项目链接:https ://github.com/opencitations/oc_graphenricher
致谢
该项目是作为 Wikidata 研究项目中的 Wikipedia Citations 的一部分开发的,在教授的监督下。西尔维奥·佩罗尼。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
oc_graphenricher -0.2.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 9de015503be14b926ad6631d5949bfe4d1f788157ffcca0b40e890761c80ee5d |
|
| MD5 | d04da7772e60f4c9915706bfe34e37ec |
|
| 布莱克2-256 | 2e99dfe2ddeac4d7428bd845a253d7ffae5af5df340f0dcf00333e95bbf410af |
oc_graphenricher -0.2.3-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | cd1fec17bec8bf6b700062af3d6f104754b3dc1a9766347dadc002a7444dba8f |
|
| MD5 | 88be7db8a492e4d399cc51c1bc593399 |
|
| 布莱克2-256 | b4dc0b8bdc87284aecd0754fc0d27231ee9042332dad551f0c2c7d0b7a2b4ab4 |