首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分包含在n-quads文件中的所有不同图

拆分包含在n-quads文件中的所有不同图
EN

Stack Overflow用户
提问于 2019-05-06 22:21:18
回答 1查看 176关注 0票数 0

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

代码语言:javascript
复制
<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。我真的不知道如何解决这个问题,所以任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-06-20 20:50:46

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

代码语言:javascript
复制
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中没有保证),您可以通过搜索空格来找到它。

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
with open('myfile.nquads', 'rt') as f:
  for graph in parse_nquads(f):
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56007110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档