【问题标题】:EOF Error Parsing Manchester Syntax in OWL-API在 OWL-API 中解析曼彻斯特语法的 EOF 错误
【发布时间】: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;
}

问题是:

  1. 如何解决此 EOF 错误?
  2. 如何将曼彻斯特语法正确插入 OWL-API?
  3. 在哪里可以找到有关如何使用曼彻斯特语法解析本体的文档?

非常感谢。

【问题讨论】:

  • 你可以找到曼彻斯特语法规范here
  • 嗨亨丽埃特。虽然这个链接不是我所期望的,但它有很大帮助。谢谢。

标签: owl owl-api


【解决方案1】:

您对 OWLAPI 类的使用似乎是正确的。预期会出现其他输入的问题,即,这不是一个完整的公理。 意思是说hasBrother对于一个人只能出现两次并且有整数范围吗?

事实上,OWLAPI 合约模块中有一个单元测试使用这个字符串作为解析的输入:

    String in = "p max 1 owl:real";
    ManchesterOWLSyntaxParser parser = OWLManager.createManchesterParser();
    parser.setStringToParse(in);
    OWLClassExpression cl = parser.parseClassExpression();

字符串的格式与您尝试解析的格式相同,并且它提供了一个类表达式,而不是公理 - 具体来说,是数据属性的限定最大基数限制。例如,这可以是子类公理中的超类或子类,但公理的其余部分不存在。

【讨论】:

  • 嗨,伊格纳齐奥。我很感激你的回答。事实上,我提供的公理作为公理是不正确的(可能不是类表达式)。我将很快提供详细的答案来解释我的想法。 Henriette 提供给我的链接对此至关重要。事实上,我发现 OWL-API 文档的示例非常糟糕。我正在通过反复试验弄清楚如何使用,所以我要提供的答案试图解决其中一些问题。不管怎么说,还是要谢谢你! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2010-12-16
  • 1970-01-01
相关资源
最近更新 更多