java - 为什么 addDomain 方法会影响域的父类(super class)

标签 java jena owl

最简单的示例代码如下。

    OntModel individuals = ModelFactory.createOntologyModel();
        TreeMap<String, String> namespaces=new TreeMap<String,String>();
        namespaces.put("pubo", "http://www.example.org.cn/standards/publishing/ontology/cores/");
        individuals.setNsPrefixes(namespaces);
        OntClass class1=individuals.createClass(namespaces.get("pubo")+"class1");
        class1.setLabel("class1", "en");
        OntClass class2=individuals.createClass(namespaces.get("pubo")+"class2");
        class2.setLabel("class2", "en");
class2.setSuperClass(class1);
        System.out.println(class2.getSuperClass().getURI());
        DatatypeProperty p = individuals.createDatatypeProperty(namespaces
                .get("pubo") + "haha");
        p.addDomain(class2);
        System.out.println(class2.getSuperClass().getURI());

第一个输出是:http://www.example.org.cn/standards/publishing/ontology/cores/class1 . 在我 p.addDomain(class2) 之后,第二个输出是:http://www.w3.org/2000/01/rdf-schema#Resource . 为什么????有什么建议吗?

最佳答案

getSuperClass

OntClass getSuperClass()

Answer a class that is the super-class of this class. If there is more than one such class, an arbitrary selection is made. If there is no such super-class, return null.

我同意这种行为有点令人惊讶,但这不是不正确。文件说: class1rdfs:Resource 都是您的 class2 的父类(super class),因此两者都可以由 getSuperClass 合法地返回,因为它保证是“ super -类(class)”。由于 Jena 可能在内部做的是请求所有 class2 rdfs:subClassOf X 形式的三元组并取 X 的第一个值,获得不同结果所需要做的就是发生改变可以返回的 X 值或返回它们的顺序的事情。一般来说,这些东西没有指定,所以这里没有任何不正确的地方。

如果你想检查某个东西是否是另一个的父类(super class),你可以遍历 listSuperClasses 产生的所有值, 或者简单地检查 hasSuperClass .这两种方法都有一个接受 boolean 参数的变体,因此请务必查看文档。

关于java - 为什么 addDomain 方法会影响域的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737302/

相关文章:

java - 在 Jena 中以编程方式创建 BIND 子句

python - Python 中的 Jena TDB?

java - 为 RDF 爬网程序导入类时出错

owl - 猫头鹰成员 :Class versus owl:NamedIndividual

java - 使用 OWLAPI 加载本体文件时出现 UnloadableImportException

java - 如何使状态 View 突出显示和超链接

java - 使用 Metro 连接到 WCF 服务的问题 - HTTP 有效,HTTPS 无效

java - 将电话号码中的字母和数字转换为所有数字 (Java)

java - Spring Boot Actuator/env 端点以 XML 形式返回数据 - 为什么?

rdf - 使用RDF/XML格式在Protege中创建的本体文件是RDF文件还是OWL文件?