Вопрос

InfModel infmodel = ModelFactory.createInfModel(reasoner, m);
Resource vegetarian = infmodel.getResource(source + "Vegetarian");
Resource margherita = infmodel.getResource(source + "Example-Margherita");
if (infmodel.contains(margherita, RDF., vegetarian)) {
        System.out.println("Margherita is a memberOf Vegetarian pizza");
    }

Приведенный выше пример формируется формальным пиццей. В этой сове пример-Маргерита является человеком класса Маргериты. Итак, это уже написано в файле Сова. Однако проблема в том, что разум должен сделать вывод о том, что пример Margherita должен также быть вегетарианской пиццей. Может ли кто-нибудь придать пример, который показывает, как найти возможные классы индивидуума, как в Protege?

Это было полезно?

Решение

Я решил свой вопрос. Я думаю, что возникла проблема с моей онтологией. Поэтому я создал еще одну онтологию, чтобы вывести людей. Онтология, которую я создал, содержит человека и подклассы человека: Maleperson, FemalePerson и SwardPerson. И существует два свойства объекта (Hasspouse, Hassibling) и один свойство типа данных (HATAGE). И я создал 3 человека. Джон - Малеперсонс - Хатаге (20) - Хайнс (Джейн) Джейн - Фемалепсосон - Хассерс (Джон) - Хасспус (Боб) Боб - Малеперсон - Хасспус (Джейн)

И я положил два ограничения на классы Maleperson и FemalePerson. Для Maleperson: Hasspouse Max 1 Hasspouse только Maleperson для FEMALEPERSON: Hasspouse Max 1 Hasspouse только FemalePerson

Наконец, я сделал Destperson, чтобы быть определенным классом. Перед рассуждением, Сэнтинсон не имеет человека. Однако модель должна сделать вывод, что Джейн и Боб женаты. Следовательно, в конце концов, класс Swedperson должен иметь 2 человека.

Когда я пробежал этот код в Java, используя Йену, я получил 2 отведенных лица.

OntModel ontModel = ModelFactory.createOntologyModel();
    InputStream in = FileManager.get().open(inputFileName);
    if (in == null) {
        throw new IllegalArgumentException( "File: " + inputFileName + " not found");
    }
    ontModel.read(in, "");


    Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
    reasoner = reasoner.bindSchema(ontModel);
    // Obtain standard OWL-DL spec and attach the Pellet reasoner
    OntModelSpec ontModelSpec = OntModelSpec.OWL_DL_MEM;
    ontModelSpec.setReasoner(reasoner);
    // Create ontology model with reasoner support
    OntModel model = ModelFactory.createOntologyModel(ontModelSpec, ontModel);

    // MarriedPerson has no asserted instances
    // However, if an inference engine is used, two of the three
    // individuals in the example presented here will be
    // recognized as MarriedPersons
            //ns is the uri
    OntClass marPerson = model.getOntClass(ns + "OWLClass_00000003866036241880"); // this is the uri for MarriedPerson class
    ExtendedIterator married = marPerson.listInstances();
    while(married.hasNext()) {
        OntResource mp = (OntResource)married.next();
        System.out.println(mp.getURI());
    } // this code returns 2 individuals with the help of reasoner
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top