使用 OWL API 生成 DL 表达式

DL expression generation using OWL API

我需要从 OWL API 中的 OWLObject 生成 DL 表达式。现在,我正在使用 DLSyntaxObjectRenderer,例如:

DLSyntaxObjectRenderer obj = new DLSyntaxObjectRenderer();

问题是生成的 DL 表达式只包含资源的标签(例如 Awning ⊔ Door ⊔ Gate ⊔ Shutter ⊔ Window)。虽然这些是语法上有效的 DL 表达式,但为了实现,我需要原子实体的 IRI,这样我就可以使用 OWL API 加载表达式,而不必加载整个 ontology .

我怎样才能做到这一点?

ShortFormProvider决定实体的渲染。它有几个实现,例如ManchesterOWLSyntaxPrefixNameShortFormProviderQNameShortFormProviderSimpleShortFormProvider。例如,以下代码使用 DLSyntaxObjectRenderer 并使用实体的 IRI 渲染 DL 表达式,

obj = new DLSyntaxObjectRenderer();
ShortFormProvider shortFormProvider = new ShortFormProvider() {
                @Override
                public String getShortForm(OWLEntity owlEntity) {
                    return owlEntity.getIRI().getIRIString();
                }
            };
obj.setShortFormProvider(shortFormProvider);

要呈现表达式 exp,只需使用 obj.render(exp)