当前位置: 首页 > 知识库问答 >
问题:

从文件名生成唯一的IRI

孔理
2023-03-14

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

OWLNamedIndividual objSample = df.getOWLNamedIndividual(IRI.create(iri + "#" + id));
  • 变量id字符串
  • IRI是所加载本体的基IRI;为了获取本体的基IRI,我使用了以下指令:IRI=ontology.getOntologyId().getOntologyIri().

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

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

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

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

共有1个答案

汪阳辉
2023-03-14

IRI应该是代表资源块。如果我没有理解您的话,您有一个id(比如big boat),并且您正在创建类似于 的虹膜。这不是有效的IRI,您需要用_-替换空格,这样您就有了 。即使您在Protégé中输入一个带有空格的建模元素名,它也会自动在中间放一个_

看看这篇关于IRI中无效字符的文章。

接受IRI的系统还可能处理URI中不允许的US-ASCII中的可打印字符,即上面步骤2中的“<”、“>”、“”、空格、“{”、“}”、“”、“\”、“^”和“`”。如果找到这些字符但未转换,则转换应失败。

 类似资料:
  • 问题内容: 我有一个带有String的对象,该对象具有唯一的id。(例如“ ocx7gf”或“ 67hfs8”),我需要为其提供int hascode()的实现,该实现显然是唯一的。 如何以最简单/最快的方式将字符串转换为唯一的int? 10倍 编辑-确定。我已经知道String.hashcode是可能的。但是不建议在任何地方使用。实际上’,如果不建议使用其他任何方法- 如果我的对象在集合中并且需

  • 问题 你想随机生成一个唯一的标识符。 解决方案 可以根据一个随机数值生成一个 Base 36 编码的字符串。 uniqueId = (length=8) -> id = "" id += Math.random().toString(36).substr(2) while id.length < length id.substr 0, length uniqueId() # =

  • 我想了解一下如何从java对象集合中生成唯一的id(字符串/数字等),这些对象可以是各种数据类型,如String、BigDecimal、org。乔达。时间本地日期或组织。乔达。时间LocalDateTime或任何自定义java对象。 生成的id应该基于java对象中的值,以便为具有相同值的两个集合生成相同的id。类似于sql group by子句的内容。我想从group by(col1、col2、

  • 问题内容: 我不一定要使用UUID,因为它们相当长。 该文件只需要在其目录中是唯一的。 我想到的一个想法是使用,但这似乎是错误的,因为该文件不是临时文件。 需要处理在同一毫秒内创建的两个文件的情况。 问题答案: 好吧,您可以使用3个参数的版本:它将让您将其放置在所需的位置。除非您告知,否则Java将不会像对待其他任何文件一样对待它。唯一的缺点是,文件名必须保证至少8个字符长(前缀至少3个字符,再加

  • 问题内容: 我需要将一些文件转换为PDF,然后将它们附加到电子邮件中。我将Pear Mail用于其电子邮件方面,这很好(大多数情况下- 仍在解决一些问题),但是作为此过程的一部分,我需要创建临时文件。现在我可以使用tempnam()函数,但听起来好像它在文件系统上创建了一个文件,这不是我想要的。 我只想要临时文件系统中的名称(使用sys_get_temp_dir()),该名称不会与运行同一用户同一

  • 我有多个字符串,我想用它们来生成一个固定长度的确定性字符串。我试图确保数据库中的唯一性,并且还将使用字符串作为文件名;所以我需要尽可能避免碰撞,并且需要避免特殊字符。我还需要它是确定性的,以便以相同的顺序相同的三个字符串将产生相同的输出字符串。 我想过将字符串串联在已知的分隔符上,并进行base64编码。但是,这不是固定的长度。 我想过连接字符串,从该字符串中获取哈希值,然后对它进行base64编