【问题标题】:Generating unique IRI from a filename从文件名生成唯一的 IRI
【发布时间】:2015-09-09 16:17:54
【问题描述】:

我有一个使用 Protegé 4.3.0 创建的本体,我将使用 OWL-API 将一些 OWLNamedIndividual 对象添加到文件 OWL。我使用以下指令来创建一个新的OWLNamedIndividual

OWLNamedIndividual objSample = df.getOWLNamedIndividual(IRI.create(iri + "#" + id));
  • 变量idString
  • iri是加载本体的基础IRI;为了获得本体的基本IRI,我使用了以下指令:iri = ontology.getOntologyID().getOntologyIRI()

所以新的OWLNamedIndividual被添加到加载的本体中,然后使用以下指令将本体保存到OWL文件中。

XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
OWLOntologyFormat format = manager.getOntologyFormat(ontology);
manager.saveOntology(ontology, format, IRI.create(file.toURI()));

变量id 是一个String,由文件的基本名称(即不带扩展名的文件名)生成。如果文件的基本名称中包含一个或多个空格,则保存本体没有任何错误,但是当我打开新保存的 OWL 文件时,Protegé 在第一次出现包含空格的 IRI 时报告解析错误。

如何使用已加载本体的基本 IRI 和文件的基本名称为 OWLNamedIndividual 对象创建有效的 IRI?

【问题讨论】:

  • 基本名称有一个或多个空格是什么意思?你能举个例子吗?
  • 是的,字符串id有一个或多个空格。
  • 当然,命名空间中不能有空格,这是规则。您可以将它们作为标签,但不能在 iri 中。

标签: java semantic-web owl protege owl-api


【解决方案1】:

IRI 应该是一个代表您的资源的块。如果我理解正确,您有一个诸如 bigboat 之类的 id,并且您正在创建看起来像 <http://example.com#big boat> 的 IRI。这不是有效的 IRI,您需要将空格替换为 _-,这样您就有了 <http://example.com#big_boat>。即使您在 Protégé 中输入带有空格的建模元素名称,它也会自动将_ 放在中间。

查看 this article 中的 IRI 中的无效字符。

接受 IRI 的系统也可以处理 URI 中不允许使用的 US-ASCII,即 ""、'"'、空格、 上面第 2 步中的“{”、“}”、“|”、“\”、“^”和“`”。如果这些 找到字符但没有转换,然后转换 应该失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2013-04-14
    • 2020-05-18
    • 2017-03-24
    相关资源
    最近更新 更多