Проверка непротиворечивости с использованием алгоритма Эрмита в Python для онтологии - PullRequest
0 голосов
/ 03 июля 2018

Я использую apl owlready2 для Python, чтобы загрузить онтологию и проверить согласованность для этой онтологии с помощью функции sync_reasoner () . Но кажется, что он не проверяет последовательность для онтологии. Хотя есть ошибка, это ничего не показывает! Любая идея, как я могу проверить согласованность онтологии в Python, используя owlready2 или любой другой API.

вот мой маленький код:

from owlready2 import *
onto = get_ontology("test.owl")
sync_reasoner()

и вот результат, который я получаю:

  • Owlready2 * Запуск HermiT ... java -Xmx2000M -cp C: \ Users \ 44999038 \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ owlready2 \ hermit; C: \ Users \ 44999038 \ AppData \ Local \ Programs \ Python \ Python36 -32 \ lib \ site-packages \ owlready2 \ hermit \ HermiT.jar org.semanticweb.HermiT.cli.CommandLine -c -O -D -I файл: /// C: / Users / 44999038 / AppData / Local / Temp / tmptmcc_a79
  • Owlready2 * HermiT заняло 0,48622655868530273 секунды

Онтология: enter image description here

Мой модифицированный код:

from owlready2 import *

onto = get_ontology("test.owl")
with onto:sync_reasoner()
onto.save()

Выходной файл совы у меня есть:

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

В основном мне не хватало двух важных вещей.

  1. Я положил на.save () вместо On.save ( "test_t1.owl" ). Хотя можно ставить только на.save (), но на ..save ( "test_t1.owl" ) сохраняет вывод в другом файле.

  2. Мне не хватало функции load () при упоминании онтологии источника into = get_ontology ("путь к файлу"). load () Этот путь к файлу может быть URL-адресом, таким как "https://protege.stanford.edu/ontologies/pizza/pizza.owl" или путь к локальному каталогу" C: \ User \ Desktop \ test.owl "

Мой рабочий код указан ниже:

from owlready2 import *
import owlready2

#owlready2.JAVE_EXE="C:\\Program Files\\Java\\jdk1.8.0_144\\bin\\java.exe"
onto_path.append("C:\\User\\Desktop")
onto = get_ontology("test.owl").load()
#inferred_onto = get_ontology("http://test.org/my_inferrences.owl";)
with onto: sync_reasoner()
onto.save("test_t1.owl")

Output file

0 голосов
/ 03 июля 2018

Вывод, который вы показываете, является просто выводом OWLReady, вызывающим аргумент HermiT из командной строки. Следовательно, причина, по которой «вывод» одинакова независимо.

Что вам нужно, так это результаты вывода после классификации. Согласно документации вы можете направить выводы в файл или получить результаты от ваших классов, как показано в в этом примере .

Что не очевидно, так это как определить, является ли онтология несовместимой или нет. Лучшее, что я могу найти, это то, что вам нужно искать в результатах логического вывода, и если вы можете найти класс, эквивалентный owl:Nothing, ваша онтология несовместима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...