Определите непересекающиеся классы в протеже - PullRequest
0 голосов
/ 03 февраля 2020

Я строю онтологию о музыкальной c индустрии, и у меня есть проблема: у меня также структурирована таксономия (Соло и Группа не связаны):

Класс группы определен как FormBy min 2 Artist , где также определены свойства объекта FormBy: enter image description here Класс Solo определен как sing min 1 дорожка , и это свойства объекта sing: enter image description here Моя проблема в том, что когда я создаю отдельную «Группу» и добавляю свойство объекта «sing», оно классифицируется как «Соло», что дает мне ошибку, поскольку классы не пересекаются. Как я могу решить эту проблему? Нужно ли менять свойство эквивалентных классов?

Это код моей онтологии:

@prefix : <http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#> .
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix xml: <http://www.w3.org/XML/1998/namespace> .
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @base <http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology> .

<http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology> rdf:type owl:Ontology .

#################################################################
#    Object Properties
#################################################################

###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#formedBy
:formedBy rdf:type owl:ObjectProperty ;
          owl:inverseOf :playsIn ;
          rdf:type owl:InverseFunctionalProperty ;
          rdfs:domain :Group ;
          rdfs:range :Artist .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#playsIn
:playsIn rdf:type owl:ObjectProperty ,
                  owl:FunctionalProperty ;
         rdfs:domain :Artist ;
         rdfs:range :Group ;
         rdfs:comment "The role of an artist in a group"@en ;
         rdfs:label "playsIn"@en .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#sing
:sing rdf:type owl:ObjectProperty ;
      owl:inverseOf :singBy ;
      rdf:type owl:FunctionalProperty ;
      rdfs:domain :Artist ;
      rdfs:range :Track .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#singBy
:singBy rdf:type owl:ObjectProperty ,
                 owl:InverseFunctionalProperty ;
        rdfs:domain :Track ;
        rdfs:range :Artist .


#################################################################
#    Data properties
#################################################################

###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#hasBPM
:hasBPM rdf:type owl:DatatypeProperty ;
        rdfs:domain :Track ;
        rdfs:range xsd:integer .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#hasDuration
:hasDuration rdf:type owl:DatatypeProperty ;
             rdfs:domain [ rdf:type owl:Restriction ;
                           owl:onProperty :hasDuration ;
                           owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                           owl:onDataRange xsd:float
                         ] ;
             rdfs:range xsd:float .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#hasScale
:hasScale rdf:type owl:DatatypeProperty ;
          rdfs:domain :Track ;
          rdfs:range [ rdf:type rdfs:Datatype ;
                       owl:oneOf [ rdf:type rdf:List ;
                                   rdf:first "Major" ;
                                   rdf:rest [ rdf:type rdf:List ;
                                              rdf:first "Minor" ;
                                              rdf:rest rdf:nil
                                            ]
                                 ]
                     ] .


#################################################################
#    Classes
#################################################################

###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Artist
:Artist rdf:type owl:Class ;
        rdfs:subClassOf :Person ;
        rdfs:comment "A person or a group who makes music"@en ;
        rdfs:label "Artist"@en .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Group
:Group rdf:type owl:Class ;
       rdfs:subClassOf :Artist ,
                       [ rdf:type owl:Restriction ;
                         owl:onProperty :formedBy ;
                         owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
                         owl:onClass :Artist
                       ] ;
       owl:disjointWith :Solo ;
       rdfs:comment "A number of people or things that are put together or considered as a unit"@en ;
       rdfs:label "Group"@en .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Person
:Person rdf:type owl:Class .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Solo
:Solo rdf:type owl:Class ;
      rdfs:subClassOf :Artist ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :sing ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :Track
                      ] ;
      rdfs:comment "A musical performance given by one person alone"@en ;
      rdfs:label "Solo"@en .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Track
:Track rdf:type owl:Class ;
       rdfs:comment "Piece of music on a CD or other musical recording"@en ;
       rdfs:label "Track"@en .


#################################################################
#    Individuals
#################################################################

###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Group1
:Group1 rdf:type owl:NamedIndividual ,
                 :Person ;
        :formedBy :John ,
                  :Mark ;
        :sing :Song1 .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#John
:John rdf:type owl:NamedIndividual .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Mark
:Mark rdf:type owl:NamedIndividual .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Paul
:Paul rdf:type owl:NamedIndividual ;
      :sing :Song2 .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Song1
:Song1 rdf:type owl:NamedIndividual .


###  http://www.semanticweb.org/pippobaudo/ontologies/2020/0/music_ontology#Song2
:Song2 rdf:type owl:NamedIndividual .


###  Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi
...