С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
ds_marinin
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 4
1

Python и парсинг owl-файлов

01.06.2016, 14:31. Просмотров 559. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток. Стоит следующая задача. Есть файл, который был создан в программе Protege. Пример конечного файла приложен. Из данного файла нужно построить и визуализировать граф. С визуализацией проблем нет. Есть проблема парсинга файла. То есть получить граф. Подскажите, с чего начать и куда копать, чтобы получить конечный результат. Внутри owl-файла все записано с помощью rdfs-формата.

Также пример графа, который строится в protege (кликабельно).
0
Вложения
Тип файла: txt IIEP.owl.txt (18.5 Кб, 5 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2016, 14:31
Ответы с готовыми решениями:

Парсинг xml на Python 3
Доброго времени суток, стоит задача извлечения текста из приложенного файла...

Парсинг с помощью Python
from urllib2 import urlopen ...

Парсинг документов Python 3
Всем доброго времени суток. Прошу Вашей помощи в решении такой задачи:...

Парсинг с авторизацией в Python.
Я уже научился парсить веб-страницы с помощью Python очень неплохо получается....

Парсинг строки с использованием xPath - Python
Добрый день! Вопрос заключается в следующем. Возможно ли получить вторую...

6
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
01.06.2016, 14:43 2
ds_marinin, на пример с помощью какой нибудь готовой библиотеки, вроде https://github.com/RDFLib/rdflib
или другой.
В общем открываешь гугл и pypi и там ищешь библиотеку, которая будет работать и понравится тебе, вот и все.
0
dondublon
2171 / 1085 / 218
Регистрация: 17.03.2012
Сообщений: 6,560
Записей в блоге: 5
02.06.2016, 12:53 3
ds_marinin, это же xml, стандартный формат.
0
ds_marinin
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 4
06.06.2016, 00:15  [ТС] 4
Цитата Сообщение от alex925 Посмотреть сообщение
Спасибо большое за подсказку. Но пока времени не хватает на её разбор.
Цитата Сообщение от dondublon Посмотреть сообщение
это же xml, стандартный формат.
Да, верно. До этого, с xml мало было дел, поэтому и пишу здесь. Как я понял, парсинг затрагивается с областью имен. Для этих целей я пока использую стандартную библиотеку пайтона xml.etree.ElementTree. Искать элементы получается. Но теперь два вопроса.
1. Как получать область имен независимо от файла. То есть когда любой файл на вход подается.
2. И не доконца понятно, как с помощью этой библиотеки выцепить все классы и их подклассы. Я понимаю, надо уходить в рекурсию? Или же есть варианты проще?

И еще такой вопрос. В какую сторону копать, чтобы получить что-то вроде, что на скрине во вложениях?
0
ds_marinin
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 4
06.06.2016, 00:21  [ТС] 5
Вот само вложение.
0
Миниатюры
Python и парсинг owl-файлов  
dondublon
2171 / 1085 / 218
Регистрация: 17.03.2012
Сообщений: 6,560
Записей в блоге: 5
06.06.2016, 07:45 6
Цитата Сообщение от ds_marinin Посмотреть сообщение
1. Как получать область имен независимо от файла. То есть когда любой файл на вход подается.
Непонятный вопрос. Если область имён описывается в файле - то никак. Если в ином источнике - то оттуда и получайте.

Цитата Сообщение от ds_marinin Посмотреть сообщение
2. И не доконца понятно, как с помощью этой библиотеки выцепить все классы и их подклассы. Я понимаю, надо уходить в рекурсию? Или же есть варианты проще?
Не знаю, тут надо знать, что у вас в файле, что там с глубиной дерева. Если глубина ограничена и небольшая - можно без рекурсии.

Цитата Сообщение от ds_marinin Посмотреть сообщение
И еще такой вопрос. В какую сторону копать, чтобы получить что-то вроде, что на скрине во вложениях?
Имеется в виду, gui-шное представление? Можно воспользоваться Qt-шными моделями. Правда, придётся учиться с ними работать, но, ПММ, оно того стоит.
1
ds_marinin
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 4
09.06.2016, 14:48  [ТС] 7
dondublon, большое спасибо за разъяснения, немного поразбиравшись, нашел ответы и на область имен, и рекурсивность, и представления данных. Всё ушло в rdflib и networkX(построение графа)!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import rdflib
import re
g=rdflib.Graph()
 
Source = open ('V1.owl', encoding = "utf-8")
Source_Txt = ''
for line in Source.readlines():
    Source_Txt+=line
 
g.parse(data = Source_Txt,format="application/rdf+xml")
 
FILE = open ('text.txt', 'w')
 
for s,p,o in g:
    p = re.sub ("\S*#", "", p)
    s = re.sub ("\S*#", "", s)
    o = re.sub ("\S*#", "", o)
    FILE.write (str(s)+"  "+str(p)+"  "+str(o)+"\n")
Полученный файл (text.txt)
Обрабатываемый файл (V1.owl)

После обработки в полуенном файле встречаются строки типа (субъект - предикат - объект):
N11ce5e8df8284fe791a5c2ec44efe986 someValuesFrom Компетенция

Интересует именно набор символов, так как в исходном файле для обработки такое не встречается.
Кто может подсказать, что это может быть такое? Вроде, с кодировкой проблем нет...
0
09.06.2016, 14:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2016, 14:48

Python парсинг данных и добавление в MS SQL
Задача: есть большой файл .csv (около 1 000 000 строк). Необходимо значения...

Парсинг HTML на Python 3 через http.parser
Нужно распарсить HTML-документ, чтобы вытащить из него определенные данные....

Разбор (парсинг) выражения с комплексными числами в калькуляторе на Python
Здравствуйте. Пишу калькулятор на Python, который должен уметь работать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru