0

我有一个很大的 n-quads 文件,其中包含大量不同的图表中的许多语句文件的行如下:

<http://voag.linkedmodel.org/voag#useGuidelines> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://voag.linkedmodel.org/schema/voag> .

第四个元素对应于图的 URI。

我想解析这个文件并将所有不同的图拆分为新文件或数据结构,每个图一个对象,最好使用 RDFlib。我真的不知道如何解决这个问题,所以任何帮助将不胜感激。

4

1 回答 1

0

如果这些行使得所有图形 URI 都按顺序排列在一起,那么您可以使用itertools'groupby依次解析每个:

from itertools import groupby
import rdflib
def parse_nquads(lines):
    for group, quad_lines in groupby(lines, get_quad_label):
        graph = rdflib.Graph(identifier=group)
        graph.parse(data=''.join(quad_lines), format='nquads')
        yield graph

如果第四个元素始终存在并且是一个 URI(规范中没有保证),您可以通过搜索空格找到它。

import re
RDF_QUAD_LABEL_RE = re.compile("[ \t]+<([^>]*)>[ \t].\n$")
def get_quad_label(line):
    return RDF_QUAD_LABEL_RE.search(line).group(1)

然后您可以将输入文件中的每个图形处理为新文件或数据集

with open('myfile.nquads', 'rt') as f:
  for graph in parse_nquads(f):
    ...
于 2020-06-20T12:50:45.630 回答