跳转到主要内容

rdflib的有序海龟序列化器

项目描述

Build status Code health Latest version MIT license

rdflib的有序海龟序列化器

rdflib海龟序列化器的扩展,添加了顺序(以牺牲速度为代价)。当需要生成海龟文件之间的差异,或者使人类更容易检查文件时非常有用。

$ pip install otsrdflib

用法

from rdflib import graph
from otsrdflib import OrderedTurtleSerializer

my_graph = Graph()

out = open('out.ttl', 'wb')
serializer = OrderedTurtleSerializer(my_graph)
serializer.serialize(out)

类顺序

默认情况下,类按照它们的URI字母顺序排序。

可以通过向class_order属性添加类来强制一个自定义顺序。例如,对于SKOS词汇表,您可能希望首先排序概念方案,然后是词汇表的其它元素。

serializer.class_order = [
    SKOS.ConceptScheme,
    SKOS.Concept,
    ISOTHES.ThesaurusArray,
]

未包含在class_order列表中的任何类将在列表中的类之后按字母顺序排序。

实例顺序

默认情况下,类的实例按照它们的URI字母顺序排序。

可以通过定义从URI生成排序键的函数来强制一个自定义顺序。例如,您可以定义一个函数,该函数返回要排序的URI的数字最后部分,以便按数字排序。

serializer.sorters = [
    ('.*?/[^0-9]*([0-9.]+)$', lambda x: float(x[0])),
]

元组的第一个元素(‘.*?/[^0-9]*([0-9.]+)$’)是要与URI匹配的正则表达式模式,而第二个元素(lambda x: float(x[0]))是生成排序键的函数。在这种情况下,它返回第一个回溯作为一个浮点数。

sorters中的模式将尝试与任何类的实例匹配。您还可以定义仅与特定类的实例匹配的模式。例如,您可能只想以这种方式排序SKOS.Concept的实例。

from rdflib.namespace import SKOS

serializer.sorters_by_class = {
    SKOS.Concept: [
        ('.*?/[^0-9]*([0-9.]+)$', lambda x: float(x[0])),
    ]
}

为了一个稍微复杂一点的例子,让我们看看杜威分类法。主要日程的分类是通过URI描述的,例如 http://dewey.info/class/001.433/e23/,我们将使用分类号(001.433)进行排序。但还有表格分类,如 http://dewey.info/class/1–0901/e23/。我们希望将这些分类放在主要日程之后排序。为了实现这一点,我们定义了两个排序器,一个匹配表格分类,另一个匹配主要日程分类

serializer.sorters = [
    ('/([0-9A-Z\-]+)\-\-([0-9.\-;:]+)/e', lambda x: 'T{}--{}'.format(x[0], x[1])),  # table numbers
    ('/([0-9.\-;:]+)/e', lambda x: 'A' + x[0]),  # main schedule numbers
]

通过在表格编号前加“T”和在主要日程编号前加“A”,我们确保表格编号在主要日程编号之后排序。

版本0.5中的更改

  • topClasses 属性已被重命名为 class_order,以更好地反映其内容并符合PEP8规范。它也被更改为默认为空,因为之前的默认列表相当随机。

  • 添加了 sorters_by_class 属性,允许按类别定义排序器。

项目详情


下载文件

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

源代码分发

otsrdflib-0.5.0.tar.gz (4.7 kB 查看哈希值)

上传时间 源代码

构建分发

otsrdflib-0.5.0-py2.py3-none-any.whl (6.9 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面