Я строю онтологию о музыкальной c индустрии, и у меня есть проблема: у меня также структурирована таксономия (Соло и Группа не связаны):
Класс группы определен как FormBy min 2 Artist , где также определены свойства объекта FormBy: Класс Solo определен как sing min 1 дорожка , и это свойства объекта sing: Моя проблема в том, что когда я создаю отдельную «Группу» и добавляю свойство объекта «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