Извлечение дочерних имен терминалов из иерархического файла OWL с использованием python (или преобразование OWL в JSON, чтобы упростить задачу) - PullRequest
1 голос
/ 08 января 2020

На этой странице я хочу щелкнуть по каждому подузлу дерева и распечатать все дочерние узлы терминала (т. Е. Список всех доступных наборов / систем) (например, так в приведенном ниже случае я бы щелкнул компонент биоанализа анализа -> набор анализа -> распечатать все дочерние узлы, которые представляют собой список наборов):

enter image description here

Я написал этот код:

from owlready2 import *
onto = get_ontology('http://www.bioassayontology.org/bao/bao_complete.owl').load()
print(list(onto.classes()))
onto.save(file = 'onto.test',format='rdfxml')

Но он не печатает имена, он выводит другую информацию в json, например:

<owl:Class rdf:about="http://purl.obolibrary.org/obo/GO_0009372">
  <rdfs:subClassOf rdf:resource="http://www.bioassayontology.org/bao#BAO_0000264"/>
  <obo:IAO_0000412 rdf:resource="http://purl.obolibrary.org/obo/go.owl"/>
  <oboI:inSubset rdf:resource="http://purl.obolibrary.org/obo/go#goslim_pir"/>
  <oboI:inSubset rdf:resource="http://purl.obolibrary.org/obo/go#gosubset_prok"/>

Я также пытался pronto:

import pronto
from pronto import Ontology
ont = Ontology.from_obo_library('/bao.owl')
print(ont)

Мой идеальный вывод - это список всех конечных дочерних узлов в этом дереве; или, если это невозможно, просто наглядный пример того, как извлечь эти данные в. json, чтобы я мог затем использовать синтаксический анализатор XML, но, в частности, убедившись, что фактические имена наборов находятся в файле json и не только коды, которые я получил выше, если бы кто-то мог помочь, я был бы признателен.

...