Отличие резонов в Протеже 5.0.0

Я построил небольшую онтологию в Protege 5.0.0. Когда я запускаю Reasoner Hermit 1.3.8.3, он выводит статус как:

Initializing the reasoner by performing the following steps:
class hierarchy
object property hierarchy
data property hierarchy
class assertions
object property assertions
same individuals
HermiT 1.3.8.3 classified in 97ms

С другой стороны, когда я запускаю Fact++ в той же онтологии, кажется, что онтология несовместима. Выход:

Initializing the reasoner by performing the following steps:
class hierarchy
object property hierarchy
data property hierarchy
class assertions
object property assertions
same individuals  
Error logged
java.io.IOException: invalid url
at javax.swing.JEditorPane.setPage(JEditorPane.java:418)
at org.protege.editor.owl.ui.explanation.io.IntroductoryPanel.createCenterPanel(IntroductoryPanel.java:42)
at org.protege.editor.owl.ui.explanation.io.IntroductoryPanel.<init>(IntroductoryPanel.java:33)
at org.protege.editor.owl.ui.explanation.io.InconsistentOntologyManager.explain(InconsistentOntologyManager.java:37)
at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$ClassificationRunner.installRunningReasoner(OWLReasonerManagerImpl.java:436)
at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$ClassificationRunner.run(OWLReasonerManagerImpl.java:375)
at java.lang.Thread.run(Thread.java:745)

На кого из аргументаторов мне положиться. Fact ++ выдает исключение «неверный URL-адрес». Как мне это решить?

ОБНОВЛЕНИЕ № 1 Извините, я не могу найти файл совы, в котором происходил описанный выше сценарий. Но сегодня то же самое происходит с другим файлом, где Hermit выдает исключение, но FACT работает правильно: ссылка на файл: Ссылка.
Исключение в Hermit:

 Error 7 Logged at Tue Feb 24 10:27:06 IST 2015
 IOException: invalid url
 javax.swing.JEditorPane.setPage(JEditorPane.java:418)
 org.protege.editor.owl.ui.explanation.io.IntroductoryPanel.createCenterPanel(IntroductoryPanel.java:42)
    org.protege.editor.owl.ui.explanation.io.IntroductoryPanel.<init>(IntroductoryPanel.java:33)
    org.protege.editor.owl.ui.explanation.io.InconsistentOntologyManager.explain(InconsistentOntologyManager.java:37)
    org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$ClassificationRunner.installRunningReasoner(OWLReasonerManagerImpl.java:436)
    org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$ClassificationRunner.run(OWLReasonerManagerImpl.java:375)
    java.lang.Thread.run(Thread.java:745)

person Haroon Rashid    schedule 23.02.2015    source источник
comment
Что такое онтология? Вполне возможно, что один рассуждающий поддерживает один тип рассуждений, а другой — нет. Например, похоже, что FacT++ проверяет, действительно ли IRI являются законными, тогда как HermiT вполне может просто рассматривать их как непрозрачные строки. Пробовали ли вы проверять свою онтологию с помощью каких-либо инструментов проверки OWL?   -  person Joshua Taylor    schedule 23.02.2015
comment
Да, я проверил на сайт. Это показывает, что Онтология и все ее импорты находятся в профиле OWL 2   -  person Haroon Rashid    schedule 23.02.2015
comment
Что ж, вполне может быть, что этот сайт не проверяет действительность IRI. Или второй резонатор мог что-то проверить неправильно. Без вашей онтологии мы не сможем понять, в чем проблема.   -  person Joshua Taylor    schedule 23.02.2015
comment
Это исключение не генерируется FaCT++, скорее Protege пытается найти причину, по которой онтология несовместима. Я бы также попросил вас предоставить онтологию, если это возможно, или ее анонимную версию. Как разработчик FaCT++, я хотел бы исследовать разногласия между авторами рассуждений и исправить проблему в FaCT++, если она окажется ошибочной.   -  person Dmitry Tsarkov    schedule 23.02.2015


Ответы (2)


(Это соответствует онтологии, связанной с ОБНОВЛЕНИЕМ 1)

Онтология несовместима со стандартом OWL 2 DL, FaCT++ там правильный. Причина несостоятельности онтологии заключается в следующем.

1) В онтологии есть свойство данных measures, описанное как (остались только соответствующие биты):

<rdf:Description rdf:about="http://www.example.com/tempsensor#measures">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</rdf:Description>

2) Использование этого свойства везде в онтологии:

<rdf:Description rdf:about="http://www.example.com/tempsensor#ind20">
    <measures rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">24</measures>
    <rdf:type rdf:resource="http://www.example.com/tempsensor#TempSensor"/>
</rdf:Description>

Обратите внимание, что диапазон свойства установлен на float, но значения, используемые в реальных людях, равны integer. Согласно спецификации OWL 2 (числа с плавающей запятой), float и integer — непересекающиеся типы данных.

Кажется, что по практическим соображениям HermiT ослабляет формальные ограничения на типы данных, в то время как FaCT++ остается близким к стандарту.

person Dmitry Tsarkov    schedule 24.02.2015

FaCT++ не генерирует исключения IOException и не пытается проверить достоверность IRI. Сообщение Error logged наводит меня на мысль, что Protege поймал какое-то исключение — возможно, это несогласованное исключение онтологии, но по этому сообщению трудно сказать. Вы получаете какой-либо другой вывод в Protege? Об ошибке рассуждения можно сообщить в верхнем левом углу под красным треугольником, а не только в консоли.

Изменить: это строки, в которых выдается исключение:

    URL help = getClass().getResource("InconsistentOntologyHelp.html");
    tp.setPage(help);
    Font font = UIManager.getFont("TextArea.font");

Проблема, похоже, связана с неправильным URL-адресом справки, что в данном случае, вероятно, означает отсутствие. Объяснение несоответствия работает некорректно.

Как отметил Дмитрий Царьков, в этом проявляется проблема: FaCT++ и HermiT расходятся во мнениях относительно того, непротиворечива онтология или нет. Это отдельная проблема, так как исключение, которое вы видите, генерируется в коде Protege, но все равно вызывает беспокойство — спасибо за предоставленный пример. Я открою проблему на страницах разработчиков для отладки и исправления.

person Ignazio    schedule 23.02.2015