Pull to refresh

Comments 5

У нас для аналогичных целей используется другой подход.
Формируется SPARQL-запрос с внедрёнными XPath-локаторами и, далее, в потоковом режиме извлекаются соответствующие ноды. Только потом формируется граф и, при необходимости, фильтруется и обрабытывается construct часть. Это позволяет работать с достаточно крупными документами (до 2-5 Гб в зависимости от сложности).
Изначально использовался подход, аналогичный Вашему, но возникли проблемы с производительностью и сложностью самих SPARQL-запросов. Всё же XPath в данном случае удобнее.
UFO just landed and posted this here
RDF RDF-у рознь.
Написали б в первых строках, какого рода отношения и между какого рода сущностями Вы получаете из текста страницы — было б многое понятнее.

Это у вас есть, но совершенно не в rdf-виде:
В локальное хранилище помещается следующая информация о элементах:
Информация о типе элемента (какой html тэг)
Информация о родительском элементе
Информация о позиции элемента по отношению к братьям
Информация о уровне вложенности элемента
Тест содержащийся в элементе
Информация о количестве дочерних элементов
Ссылки на дочерние элементы
Значение атрибутов для элемента

Этот перечень можно понимать с разной степени буквальности, и максимально буквально — в последнюю очередь. Как-то не сразу верится, что ваша «Информация о» — это просто запись собственно того, что стоит после «о», а не каких-то разнообразных подробностей информации об этом. В смысле, «Информация о родительском элементе» — не какие-то там подробности о нём, а просто RDF-запись «вот этот элемент — имеет родителем — вот тот элемент».

Однако, при внимательном чтении следующего за тем абзацем исходника, получается, что в RDF-хранилище попадает не более чем. Элементы — лишь то, что возвращает внутри функции HTML-парсера функция BNode, то есть, лишь элементы DOM страницы. Типы отношений — всего несколько, из пространства имён 'http://localhost/rdf/html#'

Про них рекурсивно выписываются лишь эти тройки:
current_element — RDF.type — self.__namespace__['comment'] или self.__namespace__[element.tag]))
current_element — self.__namespace__['parent'] — parent
parent — self.__namespace__['children'] — current_element)
current_element — self.__namespace__['children_position'] — Literal(children_position)
current_element — self.__namespace__['children_level'] — Literal(children_level)
current_element — self.__namespace__['text'] — Literal(element.text.strip())
current_element — self.__namespace__['text_content'] — Literal(element.text_content().strip())
current_element — self.__namespace__['children_count'] — Literal(len(children_elements)
current_element — self.__namespace__[i] — Literal(element.attrib[i])

И никакого NLP, никакого OWL и никаких онтологий и семантики.
Sign up to leave a comment.

Articles