IRI.getShortForm() 不能按预期使用空格和一些额外符号

IRI.getShortForm() does not work as expected with spaces and some extra symbols

IRI class 的 getShortForm() 似乎无法处理带有空格和其他一些符号的 class 名称。

OWL-API中有没有更准确解析IRI的方法(和Protege一样)

对于此代码

 for (OWLClass cls : clses) {
     String s = cls.toString();
     String s1 = cls.asOWLClass().getIRI().getShortForm();
     System.out.println("SHORT: "+s1+"    LONG: "+s);
  }

我得到了以下奇怪的结果:

SHORT: CAPECCWEAttackPatterns#DoS: resource consumption (memory)    LONG: <http://www.grsu.by/net/CAPECCWEAttackPatterns#DoS: resource consumption (memory)>
SHORT: restart    LONG: <http://www.grsu.by/net/CAPECCWEAttackPatterns#DoS: crash / exit / restart>
SHORT: data    LONG: <http://www.grsu.by/net/CAPECCWEAttackPatterns#Modify application data>

IRI 不能包含空格。它们需要转义为 %20 序列。其他一些字符也是如此。

对于空格等字符,常用的做法是使用rdfs:label注解。 Protege 的渲染器使用这些渲染器在屏幕上显示 类 和属性。