Как получить Dataproperty унаследованный от суперкласса

Я работаю над моей онтологией, используя owlapi и java, но не могу найти решение в таком случае:

Здесь у меня есть структура класса, такая как:

  • электроника
    • Радио
      • удобный

Я создал людей для этих классов, имеющих то же имя, что и их класс. В классе электроники есть человек по имени электроника.

  • Класс: электроника

    Эквивалент: ключевое слово some {"electronics"}.

  • Класс: удобный

    Dataproperty: ключевое слово

    Значение свойства данных: "удобный", тип: строка

Я использую отшельника для поиска людей в качестве ключевого слова some {"electronics", "handy"}.

Я получаю правильных людей, как электронику и удобный.

Когда я хочу перечислить значения ключевых слов dataproperty лиц в моем коде Java, я не могу получить значение ключевого слова электроники. Результат таков:

  • Индивидуальный: электроника и ключевое слово: ноль
  • Индивидуальный: удобный и ключевое слово: "удобный" (должно быть "электроника" и "удобный", но я не могу перечислить значение ключевого слова "электроника" для удобного человека)

Как я могу получить значение dataproperty класса электроники и как я могу посчитать соответствующие ключевые слова.

Я хочу отобразить результаты моего запроса как:

  • Индивидуальный: электроника, ключевое слово: " электроника ", соответствующее количество ключевых слов : 1
  • Индивидуальный: удобный, ключевое слово { "electronics", "удобный" }, соответствующее количество ключевых слов :2

Спасибо.

Вот моя онтология:

<?xml version="1.0" encoding="UTF-8"?>
<Ontology xml:base="http://www.semanticweb.org/2015/ipek_ontology" ontologyIRI="http://www.semanticweb.org/2015/ipek_ontology">
<Prefix name="" IRI="http://www.w3.org/2002/07/owl#"/>
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
<Prefix name="rdf" IRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>    
<Prefix name="xsd" IRI="http://www.w3.org/2001/XMLSchema#"/>
<Prefix name="rdfs" IRI="http://www.w3.org/2000/01/rdf-schema#"/>
<Declaration>
<Class IRI="#Electronics"/>
</Declaration>
<Declaration>
<Class IRI="#Handy"/>
</Declaration>
<Declaration>
<Class IRI="#Radio"/>
</Declaration>
<Declaration>
<DataProperty IRI="#GTIP_number"/>
</Declaration>
<Declaration>
<DataProperty IRI="#Keyword"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#Electronics"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#handy"/>
</Declaration>
<Declaration>
<NamedIndividual IRI="#radio"/>
</Declaration>
<EquivalentClasses>
<Class IRI="#Electronics"/>
<DataHasValue>
<DataProperty IRI="#Keyword"/>
<Literal datatypeIRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral">electronics</Literal>
</DataHasValue>
</EquivalentClasses>
<SubClassOf>
<Class IRI="#Handy"/>
<Class IRI="#Radio"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#Radio"/>
<Class IRI="#Electronics"/>
</SubClassOf>
<ClassAssertion>
<Class IRI="#Electronics"/>
<NamedIndividual IRI="#Electronics"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Handy"/>
<NamedIndividual IRI="#handy"/>
</ClassAssertion>
<ClassAssertion>
<Class IRI="#Radio"/>
<NamedIndividual IRI="#radio"/>
</ClassAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#GTIP_number"/>
<NamedIndividual IRI="#Electronics"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">20.12 </Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#GTIP_number"/>
<NamedIndividual IRI="#handy"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">20.12.15.47</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#Keyword"/>
<NamedIndividual IRI="#handy"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">handy</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
<DataProperty IRI="#GTIP_number"/><NamedIndividual IRI="#radio"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">20.12.15</Literal>
</DataPropertyAssertion>
<DataPropertyRange>
<DataProperty IRI="#GTIP_number"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>
<DataPropertyRange>
<DataProperty IRI="#Keyword"/>
<Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/><IRI>#Electronics</IRI>
<Literal datatypeIRI="http://www.w3.org/2000/01/rdf-schema#Literal">Electronics</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/>
<IRI>#GTIP_number</IRI>
<Literal datatypeIRI="http://www.w3.org/2000/01/rdf-schema#Literal">GTIP_number</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="owl:deprecated"/><IRI>#Keyword</IRI>
<Literal datatypeIRI="http://www.w3.org/2000/01/rdf-schema#Literal">Keyword</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:label"/><IRI>#Radio</IRI>
<Literal datatypeIRI="http://www.w3.org/2000/01/rdf-schema#Literal">Radio</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:comment"/>
<AbbreviatedIRI>rdfs:isDefinedBy</AbbreviatedIRI>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">Product Code</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="rdfs:isDefinedBy"/>
<AbbreviatedIRI>rdfs:isDefinedBy</AbbreviatedIRI>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#Name">Funda</Literal>
</AnnotationAssertion>
<AnnotationAssertion>
<AnnotationProperty abbreviatedIRI="owl:versionInfo"/>
<AbbreviatedIRI>rdfs:isDefinedBy</AbbreviatedIRI>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">1.0</Literal>
</AnnotationAssertion>
</Ontology>
<!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net 

->`И ниже приведен фрагмент моего кода на Java, я сравниваю значения ключевых слов отдельных элементов с элементами KeywordArray:

public static String RankEntity(OWLEntity entity){   //rank results
    StringBuilder sb=new StringBuilder();
    OWLDataProperty p = factory.getOWLDataProperty(IRI.create(base + "keyword"));
    String keyword="";
    Set<OWLNamedIndividual> result = entity.getIndividualsInSignature();  
    for (OWLNamedIndividual owlNamedIndividual : result) {
        for (OWLClassExpression eclass:EntitySearcher.getTypes(owlNamedIndividual, ontology)){
                    for (OWLLiteral lit: EntitySearcher .getDataPropertyValues(owlNamedIndividual,p,ontology)){
                    for (int j=0;j<KeywordArray.length;j++){
                        if (KeywordArray[j]!=null){
                            if(lit.getLiteral().equals(KeywordArray[j]))
                                {
                                    if (keyword=="")
                                        keyword+= " " + KeywordArray[j];
                                    else
                                        keyword+= ", " + KeywordArray[j];

                                    erank++;
                                }
                        }

                }       
            }
        }
        System.out.println("Rank: [ " + erank + " ]\t " +
                "keywords: [ " + keyword + " ]");
    }
    return ("Rank: [ " + erank + " ]\t " +
            "Keywords: [ " + keyword + " ]");
}'

0 ответов

Другие вопросы по тегам