Как я могу сделать вывод из наличия специального свойства в классе в онтологии OWL - PullRequest
0 голосов
/ 23 апреля 2020

Я изо всех сил пытался создать онтологию для музыкальных c данных фестиваля. По моим данным у меня есть люди класса Person. У людей может быть профессия, выраженная свойством has_profession, которое указывает на класс Profession с несколькими подклассами, т.е. MusicArtist, который имеет подкласс Composer (то есть профессия, а не человек). Также у меня есть экземпляры класса Composition, которые composed_by являются экземплярами класса Person и наоборот composed Composition. Как я могу создать свою онтологию таким образом, чтобы семантический c мыслитель мог сделать вывод из существования тройного :x :composed :y (или :y :composed_by :x) к (неявному) существованию тройного :x :has_profession :composer?

Я пытался найти решение, и это то, что я сделал до сих пор. Но, похоже, это не совсем правильно.

@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix dmt: <http://www.donaueschinger-musiktage.de/>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.

### Classes

foaf:Person a owl:Class.

dmt:Profession a owl:Class.

dmt:MusicArtist a owl:Class;
    rdfs:subClassOf dmt:Profession.

dmt:Composer a owl:Class ;
    rdfs:subClassOf dmt:MusicArtist;
    rdfs:subClassOf
        [ a owl:Restriction ;
          owl:onProperty :composed ;
          owl:allValuesFrom :Person ] .

dmt:Composition a owl:Class.

### Properties

dmt:composed a owl:ObjectProperty;
    rdfs:domain foaf:Person;
    rdfs:range dmt:Composition;
    owl:inverseOf dmt:composed_by.

dmt:has_profession a owl:ObjectProperty;
    rdfs:domain foaf:Person;
    rdfs:range dmt:Profession;

### Individuals

dmt:A_Little_Song a dmt:Composition.

dmt:John_Doe a foaf:Person;
    dmt:composed dmt:A_Little_Song.

### Now I want to infer, that John_Doe ":has_profession :composer" 
### because he composed something...

Любые примеры или подсказки из лучших практик были бы очень хороши :) Заранее спасибо! JS

...