0

我需要从OWLObjectOWL API 中生成 DL 表达式。现在,我使用DLSyntaxObjectRenderer的是:

DLSyntaxObjectRenderer obj = new DLSyntaxObjectRenderer();

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

我怎样才能做到这一点?

4

1 回答 1

0

ShortFormProvider确定实体的渲染。它有几种实现方式,例如ManchesterOWLSyntaxPrefixNameShortFormProvider, QNameShortFormProvider, SimpleShortFormProvider. 例如,以下代码使用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)

于 2019-05-08T11:58:02.463 回答