我有一个很大的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。我真的不知道如何解决这个问题,所以任何帮助都将不胜感激。
发布于 2020-06-20 20:50:46
如果这些行使得所有的图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 (在the specification中没有保证),您可以通过搜索空格来找到它。
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):
...https://stackoverflow.com/questions/56007110
复制相似问题