java - 如何将 OWL API 对象转换为 Java 对象?

标签 java owl owl-api

我正在使用 OWL API 来处理本体。我想创建自己的与 OWLObjects 对应的 Java 对象(例如,OWLEntity、OWLClass 等)。我该怎么做?

为此,我想我需要知道如何获取 OWLEntity 对象的名称(字符串)。但是怎么办?我搜索了 OWL API Javadoc 和教程,但找不到方法。

public class Arg {
    private String name;
    private String defaultValue;
    private boolean isEssential = false;
    private Set<String> preArgNames;

    public Arg(String name, String defaultValue, boolean isEssential,
            Set<String> preArgNames) {
        this.name = name;
        this.defaultValue = defaultValue;
        this.isEssential = isEssential;
        this.preArgNames = preArgNames;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isEssential() {
        return isEssential;
    }

    public void setEssential(boolean isEssential) {
        this.isEssential = isEssential;
    }

    public Set<String> getPreArgNames() {
        return preArgNames;
    }

    public void setPreArgNames(Set<String> preArgNames) {
        this.preArgNames = preArgNames;
    }

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }
}

我的应用程序有一个数据结构。数据存储在本体中。我在上面添加了我的代码示例。

Arg对象的成员变量必须由本体数据填充。例如Class SomeArg1, SomeArg2,... 它在本体中有子类和限制,我想获取实体名称和相关限制等,以填充 Arg 对象的适当变量。

最佳答案

OWLEntity 有一个方法 getIRI() 可以为您提供对象的 IRI; IRI 既是 CharSequence,又可以使用经典的 toString() 方法转换为 String。

在最新的 OWL API 中,您还可以访问 IRI 的 namespace 和片段(这只是 URI 的扩展,即类似 http://example.com 或 urn:testuri 的东西),正如 mikrohelen 上面提到的。

这对所有 OWLEntity 子接口(interface)都有效,即 OWLClass、OWLDataProperty、OWLObjectProperty、OWLDatatype、OWLNamedIndividual 和 OWLAnnotationProperty。

我还不能回答 Anthony 的评论,但我在这里引用:

Blockquote Not all owl entities (classes, individuals...) have names. I'm guessing that by name you mean the URI used as rdf:id. Protege has a feature that automatically generates Java wrapper classes for owl classes in your ontology, it might be helpful for you. – Anthony Sep 5 at 15:04

严格来说,这是不正确的:所有 OWLEntity 实例都有 IRI。没有 IRI 的类和个体不是实体:类是 OWLClassExpression 实例,如限定限制,没有 IRI 的个体是 OWLAnonymousIndividual 实例。这同样适用于属性:匿名的只是表达式,例如属性链,但它们不是 OWLEntity 实例。

关于java - 如何将 OWL API 对象转换为 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522894/

相关文章:

javascript - javascript上的多线程捕获子线程的响应

java - 如何修复 org.springframework.beans.factory.BeanCreationException

java - org.apache.hadoop.security.AccessControlException : Permission denied when trying to access S3 bucket through s3n URI using Hadoop Java APIs on EC2

java - 使用 Jena 以编程方式生成 OWL 类层次结构

java - 使用 Java 和 xPath 在 OWL/XML 文件中提取节点后命名空间前缀未声明错误

java - 使用 OWL-API 和 Hermit 打印披萨本体的父类(super class)

java - 在 x86 上比较和交换 - 为什么它是一个完整的障碍?

sparql - 如何标准化此数据

java - 使用 OWL API 获取本体中两个对象的属性值交集

java - Hermit 和 OWLApi 用于检索对象属性断言