【发布时间】:2021-10-05 13:10:34
【问题描述】:
我有一个 API 可以接收 JSON 文档,其中包含本体的类、属性和公理。该文件如下所示:
{
"id": "myontologyid",
"outformat": "OWL",
"ontoclass": ["Person", "Man", "Woman", "Animal", "Rational", "Arm"],
"ontoaxioms": ["Man subClassOf (Person)", "Person EquivalentTo: (Man OR Woman)", "hasBrother max 2 xsd:integer"],
"ontoproperties": ["hasPart", "isBrotherOf", "hasBrother"]
}
本体公理键是一个包含本体所有公理的数组。此数组的值必须采用曼彻斯特语法,因为我将使用 ManchesterOWLSyntaxParser 进行解析。
当我尝试解析此代码时,我在hasBrother max 2 xsd:integer axiom 上收到以下错误:
[apache-tomcat-8.5.69-2]: org.semanticweb.owlapi.manchestersyntax.renderer.ParserException: Encountered |EOF| at line 1 column 29. Expected one of:
SubClassOf:
or
and
DisjointWith:
EquivalentTo:
我认为曼彻斯特语法不正确。但我找不到任何指示如何使用它的 OWL-API 参考或文档。有吗?
下面是我尝试解析公理的部分代码:
ManchesterOWLSyntaxParserImpl parser = (ManchesterOWLSyntaxParserImpl) OWLManager.createManchesterParser();
parser.setOWLEntityChecker(entityChecker);
try {
for (int i = 0; i < this.axiomas.length(); i++) {
parser.setStringToParse(this.axiomas.getString(i));
owlOntology.addAxiom(parser.parseAxiom());
}
} catch (Exception e) {
System.out.print(e.toString());
return null;
}
问题是:
- 如何解决此 EOF 错误?
- 如何将曼彻斯特语法正确插入 OWL-API?
- 在哪里可以找到有关如何使用曼彻斯特语法解析本体的文档?
非常感谢。
【问题讨论】:
-
你可以找到曼彻斯特语法规范here。
-
嗨亨丽埃特。虽然这个链接不是我所期望的,但它有很大帮助。谢谢。