Разделите все различные графики, включенные в файл n-quads
У меня есть большой файл 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. Я действительно не знаю, как решить эту проблему, поэтому любая помощь будет принята с благодарностью.
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):
...