一个用于检索语义前缀映射的Python库
项目描述
prefixmaps
一个用于检索语义前缀映射的Python库。
语义前缀映射将前缀(例如 skos
)映射到命名空间(例如 http://www.w3.org/2004/02/skos/core#
)。
此存储库和相应的库旨在满足以下要求:
- 生成RDF文档头部的前缀映射
- 用于在工具中扩展CURIEs和短标识符到可以作为RDF三元的主题使用的URI
- 覆盖来自多个不同域的前缀
- 前缀或前缀-命名空间映射没有单一权威来源(冲突恢复能力)
- 首选的语义命名空间优先于Web URL
- 尽可能优先选择权威首选前缀
- 每个单独的前缀映射都是不区分大小写的双射
- 前缀映射组合和自定义排序的prefixmaps
- 轻量级/低占用空间
- 快速(待办事项)
- 网络独立性/版本化前缀映射
- 可选地从网络上的外部权威获取最新版本
这不是此库的预期用途
- 前缀或命名空间的元数据的一般来源
- 将标识符解析为Web URL以供人类查找信息的机制
安装
pip install prefixmaps
用法
结合curies库使用
from prefixmaps import load_converter
from curies import Converter
converter: Converter = load_converter(["obo", "bioregistry.upper", "linked_data", "prefixcc"])
>>> converter.expand("CHEBI:1")
'http://purl.obolibrary.org/obo/CHEBI_1'
>>> converter.expand("GEO:1")
'http://purl.obolibrary.org/obo/GEO_1'
>>> converter.expand("owl:Class")
'http://www.w3.org/2002/07/owl#Class'
>>> converter.expand("FlyBase:FBgn123")
'http://identifiers.org/fb/FBgn123'
备用排序/冲突恢复
- prefix.cc使用前缀
geo
为 geosparqlhttp://www.opengis.net/ont/geosparql#
- OBO 使用前缀
GEO
来表示 地理实体本体,扩展为http://purl.obolibrary.org/obo/GEO_
- 生物注册表使用前缀
geo
来表示 NCBI GEO,并为 OBO 本体“重铸”了geogeo
前缀
如果我们优先考虑 prefix.cc,则忽略 OBO 前缀
converter = load_converter(["prefixcc", "obo"])
>>> converter.expand("GEO:1")
>>> converter.expand("geo:1")
'http://www.opengis.net/ont/geosparql#1'
尽管前缀扩展是区分大小写的,但我们故意阻止仅在大小写上不同的冲突。
如果我们将 bioregistry
推送到列表开头,则 GEOGEO 可以用作 OBO 本体的前缀
converter = load_converter(["bioregistry", "prefixcc", "obo"])
>>> converter.expand("geo:1")
'http://identifiers.org/geo/1'
>>> converter.expand("GEO:1")
>>> converter.expand("GEOGEO:1")
'http://purl.obolibrary.org/obo/GEO_1'
请注意,从 OBO 的角度来看,GEOGEO 是非规范的。
我们使用 bioregistry
的上规范化变体得到类似的结果
converter = load_converter(["bioregistry.upper", "prefixcc", "obo"])
>>> converter.expand("GEO:1")
'http://identifiers.org/geo/1'
>>> converter.expand("geo:1")
>>> converter.expand("GEOGEO:1")
'http://purl.obolibrary.org/obo/GEO_1'
使用 OBO 本体的用户希望将 OBO 放在列表的开头
converter = load_converter(["obo", "bioregistry.upper", "prefixcc"])
>>> converter.expand("geo:1")
>>> converter.expand("GEO:1")
'http://purl.obolibrary.org/obo/GEO_1'
>>> converter.expand("GEOGEO:1")
请注意,在这个排序下,没有 NCBI GEO 的前缀。这并不是一个主要的限制,因为 NCBI GEO 没有规范语义渲染。这可以在未来通过独特的 OBO 前缀添加。
您可以使用预先准备好的“合并”前缀集,它优先考虑 OBO
converter = load_converter("merged")
>>> converter.expand("GEOGEO:1")
>>> converter.expand("GEO:1")
'http://purl.obolibrary.org/obo/GEO_1'
>>> converter.expand("geo:1")
网络独立性和请求最新版本
默认情况下,这将使用与包一起分发的元数据。这在可重复性方面具有某些优势,但这意味着如果上游源中添加了新的本体或前缀,您将看不到这些。
刷新并使用最新上游
converter = load_converter("obo", refresh=True)
这将从 http://obofoundry.org/registry/obo_prefixes.ttl 进行获取
上下文元数据
查看描述字段
存储库组织
包含使用 OBO 和生物注册表等来源构建的前缀映射的数据文件与 python 一起分发
位置
CSV 字段描述
- context:此上下文的唯一处理程序。这必须是文件的基名
- prefix:对应于 http://www.w3.org/ns/shacl#prefix
- namespace:对应于 http://www.w3.org/ns/shacl#namespace
- canonical:如果这满足双射,则为 true
刷新数据
数据可以通过几种方式刷新
-
本地,您可以使用
tox
与pip install tox tox-poetry tox -e refresh
-
手动运行并通过 此 GitHub Actions 工作流程 自动提交。
-
运行 makefile(警告,这需要一些预配置
make etl
TODO:创建一个自动发布新版本的 GitHub Action
请注意,不应针对单个 CSV 文件提出 PR。这些是从上游源生成的。
我们暂时存放了少量经过策划的前缀映射,如 linked_data.yaml,CSV 由 YAML 生成。
我们的目标是最终将这些交由上游源。
请求新前缀
此存储库不是一个前缀注册表。其工作仅仅是聚合不同的前缀映射。请向上游请求更改。
项目详细信息
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。