Доступ к ограничению от owl-суперкласса с Apache Jena - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть этот сова-файл. #indelivers является подклассом #ipInDelivers. Я хочу выяснить, как найти ресурс #isPartOfMibDef, которым обладает этот класс, в данном случае # IP-MIB.

<owl:ObjectProperty rdf:about="#isPartOfMibDef"/>

<owl:ObjectProperty rdf:about="#hasSyntax"/>

<owl:Class rdf:about="#Counter32">
    <rdfs:subClassOf rdf:resource="#SYNTAX"/>
</owl:Class>

<owl:Class rdf:about="&owl;Thing"/>

<owl:Class rdf:about="#mibObjects">
    <rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>

<owl:Class rdf:about="#IP-MIB">
    <rdfs:subClassOf rdf:resource="#mibDefs"/>
</owl:Class>

<owl:Class rdf:about="#ipInDelivers">
    <owl:equivalentClass>
        <owl:Class>
            <owl:intersectionOf rdf:parseType="Collection">
                <owl:Restriction>
                    <owl:onProperty rdf:resource="#hasSyntax"/>
                    <owl:allValuesFrom rdf:resource="#Counter32"/>
                </owl:Restriction>
                <owl:Restriction>
                    <owl:onProperty rdf:resource="#isPartOfMibDef"/>
                    <owl:allValuesFrom rdf:resource="#IP-MIB"/>
                </owl:Restriction>
            </owl:intersectionOf>
        </owl:Class>
    </owl:equivalentClass>
    <rdfs:subClassOf rdf:resource="#mibObjects"/>
</owl:Class>

<owl:Class rdf:about="#aliases">
    <rdfs:subClassOf rdf:resource="&owl;Thing"/>
</owl:Class>

<owl:Class rdf:about="#indelivers">
    <rdfs:subClassOf rdf:resource="#aliases"/>
    <rdfs:subClassOf rdf:resource="#ipInDelivers"/>
</owl:Class>

Код, который у меня пока есть, таков:

String NS = "http://namespace.com/owl#";
InputStream is = FileManager.get().open(this.owlPath);
OntModel ontology = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF,null);
    ontology.read(is,"");

Reasoner reason = ReasonerRegistry.getOWLMicroReasoner();
InfModel info = ModelFactory.createInfModel(reason,ontology);

OntClass alias = this.ontology.getOntClass(NS+"indelivers");
OntClass superClass = alias.getSuperClass();

Я пытался получить доступ к большинству функций получения и получения списка в суперклассе, но, похоже, нигде не могу найти #isPartOfMibDef

Ответы [ 2 ]

0 голосов
/ 17 апреля 2012

Это сработало для меня.У моего класса совы "сеанс" нет пересечения.

OntClass cl1 = model.getOntClass(nsPrefix + "session");
    OntClass cl = cl1.getSuperClass();
    for (StmtIterator i = model.listStatements(cl, null, (RDFNode) null); i.hasNext(); ) {
        Statement stmt = i.nextStatement();
        logger.info(" - " + PrintUtil.print(stmt));
    }
0 голосов
/ 04 апреля 2012

Ваше пространство имен должно быть:

String NS = "http://namespace.com/owl#";
...