跳转到主要内容

一个用于检索语义前缀映射的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 为 geosparql http://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 进行获取

上下文元数据

参见 contexts.curated.yaml

查看描述字段

存储库组织

包含使用 OBO 和生物注册表等来源构建的前缀映射的数据文件与 python 一起分发

位置

CSV 字段描述

  1. context:此上下文的唯一处理程序。这必须是文件的基名
  2. prefix:对应于 http://www.w3.org/ns/shacl#prefix
  3. namespace:对应于 http://www.w3.org/ns/shacl#namespace
  4. canonical:如果这满足双射,则为 true

刷新数据

数据可以通过几种方式刷新

  1. 本地,您可以使用 tox

    pip install tox tox-poetry
    tox -e refresh
    
  2. 手动运行并通过 此 GitHub Actions 工作流程 自动提交。

  3. 运行 makefile(警告,这需要一些预配置

    make etl
    

TODO:创建一个自动发布新版本的 GitHub Action

请注意,不应针对单个 CSV 文件提出 PR。这些是从上游源生成的。

我们暂时存放了少量经过策划的前缀映射,如 linked_data.yaml,CSV 由 YAML 生成。

我们的目标是最终将这些交由上游源。

请求新前缀

此存储库不是一个前缀注册表。其工作仅仅是聚合不同的前缀映射。请向上游请求更改。

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

prefixmaps-0.2.5.tar.gz (707.5 kB 查看哈希值)

上传时间

构建分发

prefixmaps-0.2.5-py3-none-any.whl (752.3 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面