Protege 5.0.0 中推理机的区别
Difference between reasoners in Protege 5.0.0
我在 Protege 5.0.0 中构建了一个小的 ontology。当我 运行 Hermit 1.3.8.3 reasoner 时,它输出状态为:
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
另一方面,当我在同一个 ontology 上 运行 Fact++ 时,似乎 ontology 不一致。输出为:
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++ 抛出异常 "invalid url"。我应该如何解决这个问题?
更新#1
抱歉,我找不到发生上述情况的 owl 文件。但是,今天同样的事情发生在另一个文件上,Hermit 抛出异常但 FACT 正常工作:
Link 到文件是:Link.
隐士抛出的异常是:
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)
FaCT++ 不会抛出 IOExceptions 也不会尝试检查 IRI 有效性。
Error logged
消息让我觉得 Protege 捕获了某种异常 - 可能是不一致的 ontology 异常,但很难从这条消息中分辨出来。
你在 Protege 中得到任何其他输出吗?推理错误可能会在左上角红色三角形下方报告,而不仅仅是在控制台中。
编辑:这些是引发异常的行:
URL help = getClass().getResource("InconsistentOntologyHelp.html");
tp.setPage(help);
Font font = UIManager.getFont("TextArea.font");
问题似乎与帮助 URL 不正确有关 - 在这种情况下,这可能意味着不存在。不一致的解释似乎无法正常工作。
正如 Dmitry Tsarkov 所指出的,这揭示了一个问题:FaCT++ 和 HermiT 在 ontology 是一致还是不一致的问题上存在分歧。这是一个单独的问题,因为您看到的异常是在 Protege 代码中生成的,但仍然令人担忧 - 感谢您提供示例。我将在推理者的页面上打开一个问题来调试和修复。
(这对应于 UPDATE 1 中链接的 ontology)
根据OWL 2 DL标准,ontology不一致,FaCT++在那里是正确的。 ontology不一致的原因如下。
1)ontology中有一个数据属性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)这个属性在ontology中各处的用法是:
<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 规范 (Floating-Point Numbers),float
和 integer
是不相交的数据类型。
似乎出于实际原因,HermiT 放宽了正式的数据类型限制,而 FaCT++ 保持接近标准。
我在 Protege 5.0.0 中构建了一个小的 ontology。当我 运行 Hermit 1.3.8.3 reasoner 时,它输出状态为:
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
另一方面,当我在同一个 ontology 上 运行 Fact++ 时,似乎 ontology 不一致。输出为:
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++ 抛出异常 "invalid url"。我应该如何解决这个问题?
更新#1
抱歉,我找不到发生上述情况的 owl 文件。但是,今天同样的事情发生在另一个文件上,Hermit 抛出异常但 FACT 正常工作:
Link 到文件是:Link.
隐士抛出的异常是:
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)
FaCT++ 不会抛出 IOExceptions 也不会尝试检查 IRI 有效性。
Error logged
消息让我觉得 Protege 捕获了某种异常 - 可能是不一致的 ontology 异常,但很难从这条消息中分辨出来。
你在 Protege 中得到任何其他输出吗?推理错误可能会在左上角红色三角形下方报告,而不仅仅是在控制台中。
编辑:这些是引发异常的行:
URL help = getClass().getResource("InconsistentOntologyHelp.html");
tp.setPage(help);
Font font = UIManager.getFont("TextArea.font");
问题似乎与帮助 URL 不正确有关 - 在这种情况下,这可能意味着不存在。不一致的解释似乎无法正常工作。
正如 Dmitry Tsarkov 所指出的,这揭示了一个问题:FaCT++ 和 HermiT 在 ontology 是一致还是不一致的问题上存在分歧。这是一个单独的问题,因为您看到的异常是在 Protege 代码中生成的,但仍然令人担忧 - 感谢您提供示例。我将在推理者的页面上打开一个问题来调试和修复。
(这对应于 UPDATE 1 中链接的 ontology)
根据OWL 2 DL标准,ontology不一致,FaCT++在那里是正确的。 ontology不一致的原因如下。
1)ontology中有一个数据属性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)这个属性在ontology中各处的用法是:
<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 规范 (Floating-Point Numbers),float
和 integer
是不相交的数据类型。
似乎出于实际原因,HermiT 放宽了正式的数据类型限制,而 FaCT++ 保持接近标准。