跳转到主要内容

轻量级以数据为中心的框架,用于处理科学数据

项目描述

DLite

轻量级以数据为中心的框架,用于语义互操作性

PyPi CI tests Documentation DOI

DLite是SINTEF Open Framework and Tools (SOFT)的C实现,SOFT是一套用于使用数据模型(又称元数据)来高效描述和处理科学数据的理念和方法。

DLite overview

DLite的核心是一个用于正式表示由数据模型(在DLite中称为元数据或实体)描述的数据的框架。在此基础上,DLite提供了一个插件系统,用于处理不同格式和存储方式的数据表示,以及与Python等流行语言的绑定、本体概念的映射以及一系列工具。

文档

DLite的官方文档可以在https://sintef.github.io/dlite/找到。

安装

DLite可在PyPI上找到,并可以使用pip进行安装

pip install dlite-python[full]

方括号[full]是可选的,但确保您安装所有可选依赖项以及DLite。没有[full],您将获得一个最小的DLite安装,它仅依赖于NumPy。这将禁用大多数存储插件,除了内置的“json”、“bson”和“rdf”(当与Redland librdf编译时)。有关其他安装方法,请参阅安装说明

用法

DLite中的所有数据都由一个实例表示,该实例由一个简单的数据模型(即元数据)描述。实例由一个唯一的UUID标识,并有一组命名维度和属性。维度用于描述多维属性的形状。

DLite元数据由一个URI标识,并有一个(可选)可读的描述。每个维度都有一个名称和描述(可选),每个属性都有一个名称、类型、形状(可选)、单位(可选)和描述(可选)。属性的形状指的是命名维度。例如,一个序列化为YAML的元数据可能看起来像

uri: http://onto-ns.com/meta/0.1/Person
description: A person.
dimensions:
  nskills: Number of skills.
properties:
  name:
    type: string
    description: Full name.
  age:
    type: float32
    unit: year
    description: Age of person.
  skills:
    type: string
    shape: [nskills]
    description: List of skills.

假设您有一个包含以下内容的文件Person.yaml。在Python中,您可以使用以下方式加载此元数据

import dlite
Person = dlite.Instance.from_location("yaml", "Person.yaml", options="mode=r")

其中第一个参数是“驱动程序”,即用于加载元数据的存储插件名称。options参数是可选的。通过提供"mode=r",您指定以只读模式打开存储。

您可以通过以下方式验证Person是否是元数据

>>> isinstance(Person, dlite.Metadata)
True

我们可以使用以下方式创建一个Person的实例

holmes = Person(
    dimensions={"nskills": 4},
    properties={
      "name": "Sherlock Holmes",
      "skills": ["observing", "chemistry", "violin", "boxing"],
    }
)

当实例化元数据时,必须提供dimensions参数。它确保所有属性的形状都初始化得一致。properties参数是可选的。通过指定它,我们将属性初始化为提供的值(否则,它们将初始化为零)。

在这种情况下,我们没有初始化年龄

>>> holmes.age
0.0
>>> holmes.age = 34  # Assign the age

如果您已安装Pint,您还可以指定或访问具有单位的年龄

>>> holmes.q.age = "34year"
>>> holmes.q.age
<Quantity(34, 'year')>
>>> holmes.q.age.to("century").m
0.34

我们可以使用以下方式查看(实例的JSON表示形式)

>>> print(holmes)
{
  "uuid": "314ac1ad-4a7e-477b-a56c-939121355112",
  "meta": "http://onto-ns.com/meta/0.1/Person",
  "dimensions": {
    "nskills": 4
  },
  "properties": {
    "Sherlock Holmes" {
      "age": 34.0,
      "skills": [
        "observing",
        "chemistry",
        "violin",
        "boxing"
      ]
    }
  }
}

实例也可以使用save()方法存储

holmes.save("yaml", "holmes.yaml", "mode=w")

这将生成以下内容的YAML文件

8cbd4c09-734d-4532-b35a-1e0dd5c3e8b5:
  meta: http://onto-ns.com/meta/0.1/Person
  dimensions:
    nskills: 4
  properties:
    Sherlock Holmes:
      age: 34.0
      skills:
      - observing
      - chemistry
      - violin
      - boxind

这只是个简短的例子。DLite还有很多内容,将在文档中揭晓。

许可

DLite采用MIT许可。然而,它包含一些其他许可的第三方源文件。所有这些都应该允许与开放和专有代码进行动态和静态链接。包含的许可证的完整列表可以在LICENSES.txt中找到。

致谢

除了来自SINTEF和NTNU的内部资金外,这项工作还得到了几个项目的支持,包括

  • AMPERE(2015-2020)由Forskningsrådet和挪威工业伙伴资助。
  • FICAL(2015-2020)由Forskningsrådet和挪威工业伙伴资助。
  • 合理的合金设计(ALLDESIGN)(2018-2022)NTNU内部资助项目。
  • SFI Manufacturing(2015-2023)由Forskningsrådet和挪威工业伙伴资助。
  • SFI PhysMet(2020-2028)由挪威研究委员会和挪威工业合作伙伴资助。
  • OntoTrans(2020-2024)获得欧盟“地平线2020”研究和创新计划的资金,项目编号为n. 862136。
  • OpenModel(2021-2025)获得欧盟“地平线2020”研究和创新计划的资金,项目编号为n. 953167。
  • DOME 4.0(2021-2025)获得欧盟“地平线2020”研究和创新计划的资金,项目编号为n. 953163。
  • VIPCOAT(2021-2025)获得欧盟“地平线2020”研究和创新计划的资金,项目编号为n. 952903。
  • MEDIATE(2022-2025)获得挪威RCN、卢森堡FNR和德国SMWK的资金,通过M-era.net项目,项目编号9557。
  • MatCHMaker(2022-2026)获得欧盟“地平线2020”研究和创新计划的资金,项目编号为n. 101091687。

DLite的开发旨在使其使用愉快。

项目详情


下载文件

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

源代码分发

dlite_python-0.5.22.tar.gz (16.2 kB 查看哈希值

上传时间 源代码

构建的分发

DLite_Python-0.5.22-cp312-cp312-win_amd64.whl (387.1 kB 查看哈希值

上传时间 CPython 3.12 Windows x86-64

DLite_Python-0.5.22-cp312-cp312-manylinux_2_28_x86_64.whl (19.1 MB 查看哈希值

上传时间 CPython 3.12 manylinux: glibc 2.28+ x86-64

DLite_Python-0.5.22-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB 查看哈希值

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

DLite_Python-0.5.22-cp311-cp311-win_amd64.whl (385.9 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

DLite_Python-0.5.22-cp311-cp311-musllinux_1_1_x86_64.whl (418.5 kB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ x86-64

DLite_Python-0.5.22-cp311-cp311-musllinux_1_1_i686.whl (412.6 kB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ i686

DLite_Python-0.5.22-cp311-cp311-manylinux_2_28_x86_64.whl (19.1 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.28+ x86-64

DLite_Python-0.5.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

DLite_Python-0.5.22-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (15.7 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686

DLite_Python-0.5.22-cp310-cp310-win_amd64.whl (385.8 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

DLite_Python-0.5.22-cp310-cp310-musllinux_1_1_x86_64.whl (417.3 kB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ x86-64

DLite_Python-0.5.22-cp310-cp310-musllinux_1_1_i686.whl (411.4 kB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ i686

DLite_Python-0.5.22-cp310-cp310-manylinux_2_28_x86_64.whl (19.1 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.28+ x86-64

DLite_Python-0.5.22-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ x86-64

DLite_Python-0.5.22-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (15.7 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ i686

DLite_Python-0.5.22-cp39-cp39-win_amd64.whl (385.9 kB 查看哈希值)

上传时间: CPython 3.9 Windows x86-64

DLite_Python-0.5.22-cp39-cp39-musllinux_1_1_x86_64.whl (417.3 kB 查看哈希值)

上传时间: CPython 3.9 musllinux: musl 1.1+ x86-64

DLite_Python-0.5.22-cp39-cp39-musllinux_1_1_i686.whl (411.4 kB 查看哈希值)

上传时间: CPython 3.9 musllinux: musl 1.1+ i686

DLite_Python-0.5.22-cp39-cp39-manylinux_2_28_x86_64.whl (19.1 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.28+ x86-64

DLite_Python-0.5.22-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ x86-64

DLite_Python-0.5.22-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (15.7 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ i686

DLite_Python-0.5.22-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (7.0 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.12+ x86-64

DLite_Python-0.5.22-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (7.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.12+ i686

DLite_Python-0.5.22-cp38-cp38-win_amd64.whl (385.9 kB 查看哈希)

上传于 CPython 3.8 Windows x86-64

DLite_Python-0.5.22-cp38-cp38-musllinux_1_1_x86_64.whl (417.6 kB 查看哈希)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

DLite_Python-0.5.22-cp38-cp38-musllinux_1_1_i686.whl (411.2 kB 查看哈希)

上传于 CPython 3.8 musllinux: musl 1.1+ i686

DLite_Python-0.5.22-cp38-cp38-manylinux_2_28_x86_64.whl (19.1 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.28+ x86-64

DLite_Python-0.5.22-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

DLite_Python-0.5.22-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (15.7 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686

DLite_Python-0.5.22-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (7.0 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.12+ x86-64

DLite_Python-0.5.22-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (7.0 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.12+ i686

支持