rdflib的有序海龟序列化器
项目描述
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 937f02cd655487c0632aa1dcab6f7aabd956fa9c3415ec30bb90726a8011d626 |
|
MD5 | e3eb7b0ae3d0c813f4643a7a1e616a18 |
|
BLAKE2b-256 | 151fc8b55fcb049714e4fe443c9c6a280b5915ff63bc347a142e304bf641b714 |
otsrdflib-0.5.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c05605d093b0263c5500e852f81d185ce14dabbcbc323a600c6ca24bd7b7bfca |
|
MD5 | 57fde7f25f28cac729e3bba59e810912 |
|
BLAKE2b-256 | 23d3c9e172abeb9a043154f44cffaadc079bea37fb604cf59beee536e543a61e |