Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 利用owlapi查询OWL本体存在的问题_Java_Owl_Semantic Web_Protege_Owl Api - Fatal编程技术网

Java 利用owlapi查询OWL本体存在的问题

Java 利用owlapi查询OWL本体存在的问题,java,owl,semantic-web,protege,owl-api,Java,Owl,Semantic Web,Protege,Owl Api,我在OWLAPI示例中使用了本体 private static final String KOALA = "<?xml version=\"1.0\"?>\n" + "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/200

我在OWLAPI示例中使用了本体

private static final String KOALA = "<?xml version=\"1.0\"?>\n"
    + "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns=\"http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#\" xml:base=\"http://protege.stanford.edu/plugins/owl/owl-library/koala.owl\">\n"
    + "  <owl:Ontology rdf:about=\"\"/>\n"
    + "  <owl:Class rdf:ID=\"Female\"><owl:equivalentClass><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty><owl:hasValue><Gender rdf:ID=\"female\"/></owl:hasValue></owl:Restriction></owl:equivalentClass></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Marsupials\"><owl:disjointWith><owl:Class rdf:about=\"#Person\"/></owl:disjointWith><rdfs:subClassOf><owl:Class rdf:about=\"#Animal\"/></rdfs:subClassOf></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Student\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Person\"/><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">true</owl:hasValue></owl:Restriction><owl:Restriction><owl:someValuesFrom><owl:Class rdf:about=\"#University\"/></owl:someValuesFrom><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"KoalaWithPhD\"><owl:versionInfo>1.2</owl:versionInfo><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Restriction><owl:hasValue><Degree rdf:ID=\"PhD\"/></owl:hasValue><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasDegree\"/></owl:onProperty></owl:Restriction><owl:Class rdf:about=\"#Koala\"/></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"University\"><rdfs:subClassOf><owl:Class rdf:ID=\"Habitat\"/></rdfs:subClassOf></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Koala\"><rdfs:subClassOf><owl:Restriction><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">false</owl:hasValue><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf><owl:Restriction><owl:someValuesFrom><owl:Class rdf:about=\"#DryEucalyptForest\"/></owl:someValuesFrom><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Animal\"><rdfs:seeAlso>Male</rdfs:seeAlso><rdfs:subClassOf><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasHabitat\"/></owl:onProperty><owl:minCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:minCardinality></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf><owl:Restriction><owl:cardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:cardinality><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><owl:versionInfo>1.1</owl:versionInfo></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Forest\"><rdfs:subClassOf rdf:resource=\"#Habitat\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Rainforest\"><rdfs:subClassOf rdf:resource=\"#Forest\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"GraduateStudent\"><rdfs:subClassOf><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasDegree\"/></owl:onProperty><owl:someValuesFrom><owl:Class><owl:oneOf rdf:parseType=\"Collection\"><Degree rdf:ID=\"BA\"/><Degree rdf:ID=\"BS\"/></owl:oneOf></owl:Class></owl:someValuesFrom></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Student\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Parent\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Animal\"/><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty><owl:minCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">1</owl:minCardinality></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass><rdfs:subClassOf rdf:resource=\"#Animal\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"DryEucalyptForest\"><rdfs:subClassOf rdf:resource=\"#Forest\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Quokka\"><rdfs:subClassOf><owl:Restriction><owl:hasValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#boolean\">true</owl:hasValue><owl:onProperty><owl:FunctionalProperty rdf:about=\"#isHardWorking\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"TasmanianDevil\"><rdfs:subClassOf rdf:resource=\"#Marsupials\"/></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"MaleStudentWith3Daughters\"><owl:equivalentClass><owl:Class><owl:intersectionOf rdf:parseType=\"Collection\"><owl:Class rdf:about=\"#Student\"/><owl:Restriction><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty><owl:hasValue><Gender rdf:ID=\"male\"/></owl:hasValue></owl:Restriction><owl:Restriction><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty><owl:cardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#int\">3</owl:cardinality></owl:Restriction><owl:Restriction><owl:allValuesFrom rdf:resource=\"#Female\"/><owl:onProperty><owl:ObjectProperty rdf:about=\"#hasChildren\"/></owl:onProperty></owl:Restriction></owl:intersectionOf></owl:Class></owl:equivalentClass></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Degree\"/>\n  <owl:Class rdf:ID=\"Gender\"/>\n"
    + "  <owl:Class rdf:ID=\"Male\"><owl:equivalentClass><owl:Restriction><owl:hasValue rdf:resource=\"#male\"/><owl:onProperty><owl:FunctionalProperty rdf:about=\"#hasGender\"/></owl:onProperty></owl:Restriction></owl:equivalentClass></owl:Class>\n"
    + "  <owl:Class rdf:ID=\"Person\"><rdfs:subClassOf rdf:resource=\"#Animal\"/><owl:disjointWith rdf:resource=\"#Marsupials\"/></owl:Class>\n"
    + "  <owl:ObjectProperty rdf:ID=\"hasHabitat\"><rdfs:range rdf:resource=\"#Habitat\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:ObjectProperty>\n"
    + "  <owl:ObjectProperty rdf:ID=\"hasDegree\"><rdfs:domain rdf:resource=\"#Person\"/><rdfs:range rdf:resource=\"#Degree\"/></owl:ObjectProperty>\n"
    + "  <owl:ObjectProperty rdf:ID=\"hasChildren\"><rdfs:range rdf:resource=\"#Animal\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:ObjectProperty>\n"
    + "  <owl:FunctionalProperty rdf:ID=\"hasGender\"><rdfs:range rdf:resource=\"#Gender\"/><rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#ObjectProperty\"/><rdfs:domain rdf:resource=\"#Animal\"/></owl:FunctionalProperty>\n"
    + "  <owl:FunctionalProperty rdf:ID=\"isHardWorking\"><rdfs:range rdf:resource=\"http://www.w3.org/2001/XMLSchema#boolean\"/><rdfs:domain rdf:resource=\"#Person\"/><rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#DatatypeProperty\"/></owl:FunctionalProperty>\n"
    + "  <Degree rdf:ID=\"MA\"/>\n</rdf:RDF>";
不返回任何项目。为什么?

正如我在其他帖子中读到的那样,我甚至尝试过与其他推理者(隐士,佩莱)合作,但结果没有改变。
如何解决它?

在您使用的本体中没有断言objectProperties;所以推理者什么也找不到,因为找不到

加载本体后添加以下代码,以便测试代码

final OWLDataFactory factory = manager.getOWLDataFactory();
ontology.add(factory.getOWLObjectPropertyAssertionAxiom(factory.getOWLObjectProperty("#HelloWorldProperty"), factory.getOWLNamedIndividual("#FirstIndividual"), factory.getOWLNamedIndividual("#SecondIndividual")));
reasoner.flush();
你的代码看起来不错,但有点复杂。 使用“GetFlatten()”可以获得更短的代码


您正在使用的本体中没有断言objectProperties;所以推理者什么也找不到,因为找不到

加载本体后添加以下代码,以便测试代码

final OWLDataFactory factory = manager.getOWLDataFactory();
ontology.add(factory.getOWLObjectPropertyAssertionAxiom(factory.getOWLObjectProperty("#HelloWorldProperty"), factory.getOWLNamedIndividual("#FirstIndividual"), factory.getOWLNamedIndividual("#SecondIndividual")));
reasoner.flush();
你的代码看起来不错,但有点复杂。 使用“GetFlatten()”可以获得更短的代码


在以下代码块中,我无法直接从特定实例检测objectProperties声明和dataProperties:

for (org.semanticweb.owlapi.reasoner.Node<OWLNamedIndividual> in
                : reasoner.getInstances(c, true)) { 
                OWLNamedIndividual i = in.getRepresentativeElement();
                String indString = i.toString();
                if (indString.contains("#")) {
                     indString = indString.substring(
                          indString.indexOf("#")+1,indString.lastIndexOf(">"));
                }

                ......

我想为找到的所有objectProperties添加一个类似边缘的域->(objectProperty)->范围,以避免丢失此信息。

我无法直接从特定实例检测objectProperties声明和dataProperties,在以下代码块中:

for (org.semanticweb.owlapi.reasoner.Node<OWLNamedIndividual> in
                : reasoner.getInstances(c, true)) { 
                OWLNamedIndividual i = in.getRepresentativeElement();
                String indString = i.toString();
                if (indString.contains("#")) {
                     indString = indString.substring(
                          indString.indexOf("#")+1,indString.lastIndexOf(">"));
                }

                ......

我想为找到的所有objectProperties添加一个类似边缘的域->(objectProperty)->范围,以避免丢失此信息。

您使用的本体中没有断言objectProperties;所以推理者什么也找不到,因为找不到。你的代码看起来不错(有点复杂,你会发现后一种捷径)。@Galigator With system.out在getObjectPropertyValues(i,objectProperty)之前,我得到了以下objectProperties:hasGender、hasHabitat、hasDegree、hasChildren。如何提取这些信息以便在GraphDB中进行转换?这是一个完全不同的问题。@Galigator我的问题是如何从owl本体中提取hasGender、hasHabitat、hasDegree、hasChildren等信息。因此,请在此处更新您的问题:您使用的本体中没有断言objectProperties;所以推理者什么也找不到,因为找不到。你的代码看起来不错(有点复杂,你会发现后一种捷径)。@Galigator With system.out在getObjectPropertyValues(i,objectProperty)之前,我得到了以下objectProperties:hasGender、hasHabitat、hasDegree、hasChildren。如何提取这些信息以便在GraphDB中进行转换?这是一个完全不同的问题。@Galigator我的问题是如何从owl本体中提取hasGender、hasHabitat、hasDegree、hasChildren等信息。因此,请在此处更新您的问题:@vincentdj本体不包含“使用”的个人任何对象属性。@AKSW考拉本体中的“hasDegree、hasGender、hasHabitat、hasChildren”是什么?@vincentdj它们是“objectProperties声明”,还有“断言”,但与objectProperties的“范围”/“域”有关。@vincentdj简短回答,这些属性存在于本体架构中,但不被任何实例数据使用。就这样。这意味着,除了提供有关属性的某些特征(例如域/范围/功能等)的信息外,图形中没有其他有用的边。您可以为本体中的每个实体添加一个“虚拟节点”。@vincentdj本体不包含“使用”任何对象属性的个人。@AKSW什么是考拉本体中的“hasDegree、hasGender、hasHabitat、hasChildren”?@vincentdj它们是“objectProperties声明”,还有“断言”“但是关于objectProperties的‘范围’/‘域’。@vincentdj简短回答,这些属性存在于本体架构中,但不被任何实例数据使用。”。就这样。这意味着,除了提供有关属性某些特征(例如域/范围/功能等)的信息的边之外,图形中没有其他有用的边。您可以为本体中的每个实体添加一个“虚拟节点”。
for (org.semanticweb.owlapi.reasoner.Node<OWLNamedIndividual> in
                : reasoner.getInstances(c, true)) { 
                OWLNamedIndividual i = in.getRepresentativeElement();
                String indString = i.toString();
                if (indString.contains("#")) {
                     indString = indString.substring(
                          indString.indexOf("#")+1,indString.lastIndexOf(">"));
                }

                ......
        System.out.println("\n-> ObjectProperties: ");
        for (OWLObjectPropertyExpression objectProperty:
            ontology.getObjectPropertiesInSignature()) { 
            String object = objectProperty.toString();
            if (object.contains("#")) {
                object = object.substring(
                        object.indexOf("#")+1,object.lastIndexOf(">"));
            }
            String domain = reasoner.getObjectPropertyDomains(objectProperty, true).toString();
            if (domain.contains("#")) {
                domain = domain.substring(
                        domain.indexOf("#")+1,domain.lastIndexOf(">"));
            }
            String range =  reasoner.getObjectPropertyRanges(objectProperty, true).toString();
            if (range.contains("#")) {
                range = range.substring(
                        range.indexOf("#")+1,range.lastIndexOf(">"));
            }
            System.out.println(domain+" "+object+" "+range);
        }

        System.out.println("\n-> DataProperties: ");
        for (OWLDataProperty dataProperty:
            ontology.getDataPropertiesInSignature()) { 
            String data = dataProperty.toString();
            if (data.contains("#")) {
                data = data.substring(
                        data.indexOf("#")+1,data.lastIndexOf(">"));
            }
            String domain = reasoner.getDataPropertyDomains(dataProperty, true).toString();
            if (domain.contains("#")) {
                domain = domain.substring(
                        domain.indexOf("#")+1,domain.lastIndexOf(">"));
            }
            System.out.println(domain+" "+data);
        }