跳转到主要内容

开放翻译环境(OTE)REST API客户端库。

项目描述

OTELib

PyPI - Python Version PyPI Codecov master CI - Tests GitHub commit activity GitHub last commit DOI

OTELib是在OTEAPI之上构建的一个小型的Python库,它提供了一个简单且Pythonic的接口,用于访问REST服务。

它使得基于管道和过滤器设计模式的管道配置、设置和运行变得非常简单。

内容

概述

OTEAPI提供了一种REST API,可以将一系列微服务连接成一个流水线,以非常灵活和可重用的方式连接仿真工具到数据源。OTELib提供了一种简单的Python接口来访问OTEAPI,使得从用户应用程序和Python脚本/笔记本中利用OTEAPI变得容易,如图所示。

OTELib overview

图:概述展示了OTELib如何通过简单的Python接口被用户应用程序用来访问数据和仿真工具。

OTEAPI利用管道和过滤器软件设计模式将连接到外部数据资源、映射到公共本体(以实现互操作性)、数据处理和运行仿真等过程分离成一系列可重用的组件。这种设计提供了非常高的灵活性,由于其模块化,易于维护,非常适合用于具有分布式和松散耦合团队的项目。

在OTELib中,管道和过滤器由类表示——一个管道类和目前4个通用的过滤器类。它使用策略软件设计模式来指定底层的微服务。

OTELib overview

  • 管道:用类型表示数据,将一个过滤器的输出连接到另一个过滤器的输入。除了连接过滤器之外,管道还可能有一些附加功能,包括(尚未实现)

    • 提供数据和查询的访问。
    • 执行授权检查。
    • 提供缓存以避免不必要的重复操作。为了避免对缓存的不授权访问,缓存可能使用访问令牌进行授权。如果需要,可以支持不同的缓存策略。

    Pipes将由OTELib透明创建,因此作为用户,您通常不会与管道交互。

  • 数据资源:是一个过滤器,用于连接到外部数据资源,并允许用户执行查询、从资源读取或写入资源等操作。在合理的地方,一些数据资源过滤器可能实现完整的CRUD(创建、读取、更新和删除)支持。

    如果数据资源过滤器从资源中读取,其get()方法将使用给定数据模型(可能即时生成)并按照该模型存储获取的内容。它将返回内部数据表示的引用。

  • 映射:是一个过滤器,用于将描述输入的数据模型映射到公共本体中的概念。映射本身可以在过滤器配置期间提供,也可以从三联体存储中检索。

  • 数据过滤器:是一个用于快速数据处理(如简单的数据转换)的过滤器。在输出生成之前,get()方法不会返回。

  • 转换:是一个用于更耗时数据处理(如仿真或要求严格的数据转换)的过滤器。它支持轮询和等待转换完成。

如何使用OTELib

假设您想设置一个如图所示的简单流水线。

Generic pipeline

图:通过管道连接三个过滤器(数据资源过滤器、映射过滤器和转换过滤器)的通用流水线。

  • 数据资源过滤器连接到一个数据资源,并使用数据模型表示从该资源中选择的内容。
  • 映射过滤器将数据模型映射到本体中,使得从数据资源读取的数据具有完全的语义。
  • 转换过滤器执行数据转换,这可能涉及仿真。结果通常将是另一个数据模型的一个实例。

要设置管道,您首先需要使用OTEClient连接到正在运行的OTE服务器。

from otelib import OTEClient

client = OTEClient('http://localhost:8080')

然后,您必须配置您想使用的过滤器实例。

data_resource = client.create_dataresource(
    downloadUrl="https://jpeg.org/images/jpegsystems-home.jpg",
    mediaType="image/jpeg",
)
mapping = client.create_mapping(mappingType="triples")
transformation = client.create_transformation(transformation_type="celery/remote")

在您能够轻松优雅地将它们组合成管道之前。

pipeline = data_resource >> mapping >> transformation

注意,这还会透明地创建连接过滤器的管道。

要执行管道,只需调用其get()方法。

pipeline.get()

它将返回最后转换结果的引用。请注意,在调用管道的get()方法之前不会读取任何数据。

管道可以重用和分支。

filter2 = client.create_filter(
    filterType="filter/crop",
    configuration={"crop": [0, 0, 200, 200]},
)
filter3 = client.create_filter(filterType="filter/blur")
pipeline2 = pipeline >> filter2
pipeline3 = pipeline >> filter3

注意filter/blur过滤器策略不存在于核心OTEAPI包中。此策略应来自另一个插件包。

以及合并。

pipeline4 = pipeline2 + pipeline3

会话

通过调用其get()方法执行管道,这将调用最后一个过滤器的get()方法,该过滤器将调用其输入管道的get()方法,依此类推。因此,管道是向上游执行的,从后往前,而数据是向下游通信的。

会话的目的是允许用户或下游过滤器提供被上游过滤器消耗的配置。它作为管道中所有管道和过滤器共享的公共字典实现。如果您在调用get()方法时未提供会话,将创建一个新的会话并将其传递到上游。

许可证

OTELib是在版权© SINTEF下以MIT许可证发布的。

致谢

OTEAPI核心得到了以下项目的支持

  • OntoTrans(2020-2024)得到了欧盟地平线2020研究和创新计划的支持,项目编号为862136。

  • VIPCOAT(2021-2025)得到了欧盟地平线2020研究和创新计划——DT-NMBP-11-2020材料建模开放创新平台的支持,项目编号为952903。

  • OpenModel(2021-2025)得到了欧盟地平线2020研究和创新计划——DT-NMBP-11-2020材料建模开放创新平台的支持,项目编号为953167。

项目详情


下载文件

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

源分发

otelib-0.4.1.tar.gz (97.8 kB 查看哈希值)

上传时间

构建分发

otelib-0.4.1-py3-none-any.whl (21.9 kB 查看哈希值)

上传时间 Python 3

由以下支持