如何从HermiT输出确定问题在本体中的位置

问题描述

我的门路很新。我已经能够运行一些示例,例如pizza.owltravel.owl。然后,我打开了其他人创建的本体,当我运行hermit推理机时,出现以下错误

An error occurred during reasoning: String '^(\(?\+?[0-9]*\)?)?[ \.\-])?(\(?[0-9]*\)?)?[0-9A-Z \.\-\(\)]*((x|ext|extension)? ?[0-9]*)?$' in the datatype restriction org.semanticweb.hermit.datatypes.rdfplainliteral.RDFPlainLiteralDatatypeHandler@64cf23b2 is not a valid regular expression..
org.semanticweb.hermit.datatypes.UnsupportedFacetException: String '^(\(?\+?[0-9]*\)?)?[ \.\-])?(\(?[0-9]*\)?)?[0-9A-Z \.\-\(\)]*((x|ext|extension)? ?[0-9]*)?$' in the datatype restriction org.semanticweb.hermit.datatypes.rdfplainliteral.RDFPlainLiteralDatatypeHandler@64cf23b2 is not a valid regular expression.
    at org.semanticweb.hermit.datatypes.rdfplainliteral.RDFPlainLiteralDatatypeHandler.validateDatatypeRestriction(RDFPlainLiteralDatatypeHandler.java:126) ~[na:na]
    at org.semanticweb.hermit.datatypes.DatatypeRegistry.validateDatatypeRestriction(DatatypeRegistry.java:113) ~[na:na]
    at org.semanticweb.hermit.structural.OWLClausification$DatarangeConverter.visit(OWLClausification.java:880) ~[na:na]
    at uk.ac.manchester.cs.owl.owlapi.OWLDatatypeRestrictionImpl.accept(OWLDatatypeRestrictionImpl.java:136) ~[na:na]
    at org.semanticweb.hermit.structural.OWLClausification$DatarangeConverter.convertDatarange(OWLClausification.java:820) ~[na:na]
    at org.semanticweb.hermit.structural.OWLClausification$normalizedAxiomClausifier.visit(OWLClausification.java:647) ~[na:na]
    at uk.ac.manchester.cs.owl.owlapi.OWLDataAllValuesFromImpl.accept(OWLDataAllValuesFromImpl.java:82) ~[na:na]
    at org.semanticweb.hermit.structural.OWLClausification.clausify(OWLClausification.java:235) ~[na:na]
    at org.semanticweb.hermit.structural.OWLClausification.preprocessAndClausify(OWLClausification.java:165) ~[na:na]
    at org.semanticweb.hermit.reasoner.loadOntology(reasoner.java:211) ~[na:na]
    at org.semanticweb.hermit.reasoner.<init>(reasoner.java:202) ~[na:na]
    at org.semanticweb.hermit.reasoner.<init>(reasoner.java:176) ~[na:na]
    at org.semanticweb.hermit.reasonerFactory.createhermitOWLreasoner(reasonerFactory.java:51) ~[na:na]
    at org.semanticweb.hermit.reasonerFactory.createreasoner(reasonerFactory.java:19) ~[na:na]
    at org.protege.editor.owl.model.inference.reasonerUtilities.createreasoner(reasonerUtilities.java:20) ~[na:na]
    at org.protege.editor.owl.model.inference.OWLreasonerManagerImpl$ClassificationRunner.ensureRunningreasonerInitialized(OWLreasonerManagerImpl.java:428) ~[na:na]
    at org.protege.editor.owl.model.inference.OWLreasonerManagerImpl$ClassificationRunner.run(OWLreasonerManagerImpl.java:386) ~[na:na]
    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_121]

在本体中定义的字符串似乎有些问题(但是我可能错了)。关于如何确定问题在本体中的位置的任何建议?

我正在使用Protege 5.5.0

谢谢!

解决方法

来自

at org.semanticweb.HermiT.structural.OWLClausification$DataRangeConverter.convertDataRange(OWLClausification.java:820)

似乎Range的{​​{1}}规范存在问题。因此,转到Protege中的“数据属性”选项卡,查找具有Range规范的数据属性,然后删除该范围规范(假设您已复制了原始本体)。

通常,当与本体作战时,我会从本体中删除公理,直到其一致或没有出错。然后,我将慢慢添加公理,直到再次失败。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...