@prefix : <https://purl.org/andreapoltronieri/scorepart/> .
@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 <https://purl.org/andreapoltronieri/scorepart/> .

<https://purl.org/andreapoltronieri/scorepart/> rdf:type owl:Ontology ;
                                                 <http://purl.org/dc/elements/1.1/creator> "Andrea Poltronieri (University of Bologna)"^^xsd:string ;
                                                 <http://purl.org/dc/elements/1.1/description> "The Score Part module models the structure and the hierarchies of a music score."@en ;
                                                 <http://purl.org/dc/elements/1.1/language> <http://publications.europa.eu/resource/authority/language/ENG> ;
                                                 <http://purl.org/dc/elements/1.1/title> "Score Part Pattern"@en ;
                                                 <http://purl.org/dc/terms/issued> "2021-07-17" ;
                                                 <http://purl.org/dc/terms/license> <https://creativecommons.org/licenses/by-sa/4.0/> ;
                                                 <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#coversRequirements> "What is the instrument playing a specific score part?, How many voices does the score part have?, Which are the metrics defining the sections of the score part?"@en ;
                                                 <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#extractedFrom> <https://purl.org/andreapoltronieri/notepattern> ;
                                                 <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasComponent> <http://ontologydesignpatterns.org/wiki/Submissions:PartOf> ;
                                                 <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasIntent> "This content ODP formalises the structure and the hierarchies of a music score/symbolic representation system."@en ;
                                                 <http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#reengineeredFrom> <https://purl.org/andreapoltronieri/HaMSEontology> ;
                                                 rdfs:comment """The Score Part pattern models the structure and the hierarchies of a music score.
In this module are used as template the following Ontology Design Patterns:"""@en ;
                                                 rdfs:label "Score Part Pattern"@en ;
                                                 owl:versionInfo "Version 1.0"@en .

#################################################################
#    Annotation properties
#################################################################

###  http://ontologydesignpatterns.org/opla/reusesPatternAsTemplate
<http://ontologydesignpatterns.org/opla/reusesPatternAsTemplate> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/creator
<http://purl.org/dc/elements/1.1/creator> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/description
<http://purl.org/dc/elements/1.1/description> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/language
<http://purl.org/dc/elements/1.1/language> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/elements/1.1/title
<http://purl.org/dc/elements/1.1/title> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/issued
<http://purl.org/dc/terms/issued> rdf:type owl:AnnotationProperty .


###  http://purl.org/dc/terms/license
<http://purl.org/dc/terms/license> rdf:type owl:AnnotationProperty .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#coversRequirements
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#coversRequirements> rdf:type owl:AnnotationProperty ;
                                                                                          rdfs:comment "This annotation property is used for exemplifying possible requirements the content pattern provides a solution for. Requirements are expressed as natural language competency questions." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#extractedFrom
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#extractedFrom> rdf:type owl:AnnotationProperty ;
                                                                                     rdfs:comment "This annotation property should be assigned with a URI, which points to the possible reference ontology which the annotated pattern was extracted from (i.e. the reference ontology that the ontology elements have been deeply or partially cloned by). The range is not explicit in the definition of the annotation property because it would turn the ontology to OWL Full. E.g. The participation pattern is extracted from the Dolce Ultra Lite ontology, hence the value for this annotation property is http://www.ontologydesignpatterns.org/ont/dul/DUL.owl" .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasComponent
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasComponent> rdf:type owl:AnnotationProperty ;
                                                                                    rdfs:comment "This annotation property is useful for content ontology design patterns. Its value is a URI, which refers to another content ontology design pattern which is a component of the annotated one." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasConsequences
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasConsequences> rdf:type owl:AnnotationProperty ;
                                                                                       rdfs:comment "This annotation property is used for briefly describing the benefits and/or possible trade-offs when using the CP." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasIntent
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasIntent> rdf:type owl:AnnotationProperty ;
                                                                                 rdfs:comment "This annotation property is used in order to describe the intent of the content pattern." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasUnitTest
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#hasUnitTest> rdf:type owl:AnnotationProperty ;
                                                                                   rdfs:comment "This property can be used to annotate a unit test (e.g. in the form of a SPARQL query) to be launched to evaluate an ontology against a requirement-based task." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#isCloneOf
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#isCloneOf> rdf:type owl:AnnotationProperty ;
                                                                                 rdfs:comment "This annotation property is used for referring a cloned ontology entity to its cloning source." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#isSpecializationOf
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#isSpecializationOf> rdf:type owl:AnnotationProperty ;
                                                                                          rdfs:comment "This annotation property is useful for content ontology design patterns and its elements. Its value is a URI, which refers either to a content ontology design pattern that is specialized by the annotated one, or to an ontology element that is specialized by the annotated one." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#reengineeredFrom
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#reengineeredFrom> rdf:type owl:AnnotationProperty ;
                                                                                        rdfs:comment "This annotation property should be assigned with a URI, which points to the concept schema, page, or anything else from which the annotated pattern was reengineered. If the source does not have any URI e.g., a printed book, this property value should provide information as precise as possible in order to identify the source. This property is alternative to the extractedFrom property because it is used when the pattern come from a concept schema which is not an owl ontology. For example content ontology design patterns, which are reengineered from data model patterns, rdf schemas, etc. should be annotatd with this property. E.g. The basicpersonalfoaf pattern is extracted from the rdf FOAF specification, hence the value for this annotation property is http://xmlns.com/foaf/spec/20071002.rdf" .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#relatedCPs
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#relatedCPs> rdf:type owl:AnnotationProperty ;
                                                                                  rdfs:comment "This annotation property can be used to indicate other CPs (if any) that specialize, generalize, inlcude, or are components of the CP. Furthermore, this field may indicate other CPs that are typically used in conjunction with the described one. Important similarities and differences with other patterns can be also described here." .


###  http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#scenarios
<http://www.ontologydesignpatterns.org/schemas/cpannotationschema.owl#scenarios> rdf:type owl:AnnotationProperty ;
                                                                                 rdfs:comment "This annotation property is used for describing examples of instantiation of the Content OP. For example, for the part-of Content OP (which represents part-whole relations) a possible scenario is the sentence: \"the brain is part of the human body\". Scenarios are expressed as natural language sentences." .


###  http://www.w3.org/2002/07/owl#versionInfo
owl:versionInfo rdf:type owl:AnnotationProperty .


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

###  https://purl.org/andreapoltronieri/scorepart/hasFragment
:hasFragment rdf:type owl:ObjectProperty ;
             owl:inverseOf :isFragmentOf ;
             rdfs:domain :Part ;
             rdfs:range :HomogeneousFragment ;
             rdfs:comment "Connects the part of the score/symbolic notation to its constituing sections."@en ;
             rdfs:label "has section"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasSection
:hasSection rdf:type owl:ObjectProperty ;
            owl:inverseOf :isSectionOf ;
            rdfs:domain :Part ;
            rdfs:range :Section ;
            rdfs:label "has section"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasVoice
:hasVoice rdf:type owl:ObjectProperty ;
          owl:inverseOf :isVoiceOf ;
          rdf:type owl:InverseFunctionalProperty ;
          rdfs:domain :Part ;
          rdfs:range :Voice ;
          rdfs:comment "Connects the part of the score/symbolic notation to its constituing sections."@en ;
          rdfs:label "has voice"@en .


###  https://purl.org/andreapoltronieri/scorepart/isFragmentOf
:isFragmentOf rdf:type owl:ObjectProperty ;
              rdfs:domain :HomogeneousFragment ;
              rdfs:range :Part ;
              rdfs:comment "Inverse of hasFragment. Connects the section of the score/symbolic notation to the belongng part."@en ;
              rdfs:label "is section of"@en .


###  https://purl.org/andreapoltronieri/scorepart/isPlayedBy
:isPlayedBy rdf:type owl:ObjectProperty ;
            owl:inverseOf :playsPart ;
            rdfs:domain :Part ;
            rdfs:range :Instrument ;
            rdfs:comment "Connects the part of the score/symbolic notation to the instrument that is assigned to play such part."@en ;
            rdfs:label "is played by"@en .


###  https://purl.org/andreapoltronieri/scorepart/isSectionOf
:isSectionOf rdf:type owl:ObjectProperty ;
             rdfs:domain :Section ;
             rdfs:range :Part ;
             rdfs:label "is section of"@en .


###  https://purl.org/andreapoltronieri/scorepart/isVoiceOf
:isVoiceOf rdf:type owl:ObjectProperty ,
                    owl:FunctionalProperty ;
           rdfs:domain :Voice ;
           rdfs:range :Part ;
           rdfs:comment "Inverse of hasVoice. Connects the voice of the score/symbolic notation to the belongng part."@en ;
           rdfs:label "is voice of"@en .


###  https://purl.org/andreapoltronieri/scorepart/playsPart
:playsPart rdf:type owl:ObjectProperty ;
           rdfs:domain :Instrument ;
           rdfs:range :Part ;
           rdfs:comment "Inverse of isPlayedBy. Connects an instrument to the the part that the instrument plays."@en ;
           rdfs:label "plays part"@en .


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

###  https://purl.org/andreapoltronieri/scorepart/hasClef
:hasClef rdf:type owl:DatatypeProperty ,
                  owl:FunctionalProperty ;
         rdfs:domain :HomogeneousFragment ;
         rdfs:range xsd:string ;
         rdfs:comment "The clef that describes the hight of a note in a music score fragment."@en ;
         rdfs:label "has clef"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasMetric
:hasMetric rdf:type owl:DatatypeProperty ,
                    owl:FunctionalProperty ;
           rdfs:domain :HomogeneousFragment ;
           rdfs:range xsd:int ;
           rdfs:comment "The metric of a specific fragment of a music score."@en ;
           rdfs:label "has metric"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasMidiProgram
:hasMidiProgram rdf:type owl:DatatypeProperty ,
                         owl:FunctionalProperty ;
                rdfs:domain :Instrument ;
                rdfs:range xsd:int ;
                rdfs:comment "The instrument playing a specific part expressed by a MIDI program."@en ;
                rdfs:label "has midi program"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasStaff
:hasStaff rdf:type owl:DatatypeProperty ,
                   owl:FunctionalProperty ;
          rdfs:domain :Part ;
          rdfs:range rdfs:Literal ;
          rdfs:comment "The staff assigned to a specific instrument part in a music score."@en ;
          rdfs:label "has staff"@en .


###  https://purl.org/andreapoltronieri/scorepart/hasTempo
:hasTempo rdf:type owl:DatatypeProperty ,
                   owl:FunctionalProperty ;
          rdfs:domain :HomogeneousFragment ;
          rdfs:range xsd:int ;
          rdfs:comment "The tempo of an homogeneous fragment, expressed in bpm (integer)."@en ;
          rdfs:label "has tempo"@en .


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

###  https://purl.org/andreapoltronieri/scorepart/HomogeneousFragment
:HomogeneousFragment rdf:type owl:Class ;
                     owl:equivalentClass [ owl:intersectionOf ( :Part
                                                                [ rdf:type owl:Restriction ;
                                                                  owl:onProperty :hasFragment ;
                                                                  owl:cardinality "1"^^xsd:nonNegativeInteger
                                                                ]
                                                              ) ;
                                           rdf:type owl:Class
                                         ] ;
                     rdfs:subClassOf [ rdf:type owl:Restriction ;
                                       owl:onProperty :isFragmentOf ;
                                       owl:allValuesFrom :Part
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty :hasClef ;
                                       owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onDataRange xsd:string
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty :hasMetric ;
                                       owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onDataRange xsd:int
                                     ] ,
                                     [ rdf:type owl:Restriction ;
                                       owl:onProperty :hasTempo ;
                                       owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                       owl:onDataRange xsd:int
                                     ] ;
                     owl:disjointWith :Instrument ;
                     rdfs:comment "A group of notes that share the same metric and clef."@en ;
                     rdfs:label "Section"@en .


###  https://purl.org/andreapoltronieri/scorepart/Instrument
:Instrument rdf:type owl:Class ;
            rdfs:subClassOf [ rdf:type owl:Restriction ;
                              owl:onProperty :playsPart ;
                              owl:someValuesFrom :Part
                            ] ;
            owl:disjointWith :Section ,
                             :Voice ;
            rdfs:comment "Any of various devices or contrivances that can be used to produce musical tones or sound. Any taxonomy can be used to subsume this concept. The default one is one extracted by Ivan Herman from the Musicbrainz instrument taxonomy, conforming to SKOS. This concept holds a seeAlso link towards this taxonomy."@en ;
            rdfs:label "Instrument"@en .


###  https://purl.org/andreapoltronieri/scorepart/Part
:Part rdf:type owl:Class ;
      rdfs:subClassOf [ rdf:type owl:Restriction ;
                        owl:onProperty :hasFragment ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :HomogeneousFragment
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :hasSection ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :Section
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :hasVoice ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :Voice
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :isPlayedBy ;
                        owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onClass :Instrument
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :hasStaff ;
                        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                        owl:onDataRange xsd:int
                      ] ;
      rdfs:comment "A part of a a score notation or a symbolic notation assigned to a specific instrument."@en ;
      rdfs:label "Part"@en .


###  https://purl.org/andreapoltronieri/scorepart/Section
:Section rdf:type owl:Class ;
         owl:equivalentClass [ owl:intersectionOf ( :Part
                                                    [ rdf:type owl:Restriction ;
                                                      owl:onProperty :hasSection ;
                                                      owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                                      owl:onClass :Section
                                                    ]
                                                  ) ;
                               rdf:type owl:Class
                             ] ;
         rdfs:subClassOf [ rdf:type owl:Restriction ;
                           owl:onProperty :isSectionOf ;
                           owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                           owl:onClass :Part
                         ] ;
         rdfs:comment "A section as defined by the repetition signs found on the music score."@en ;
         rdfs:label "Section"@en .


###  https://purl.org/andreapoltronieri/scorepart/Voice
:Voice rdf:type owl:Class ;
       owl:equivalentClass [ owl:intersectionOf ( :Part
                                                  [ rdf:type owl:Restriction ;
                                                    owl:onProperty :hasVoice ;
                                                    owl:cardinality "1"^^xsd:nonNegativeInteger
                                                  ]
                                                ) ;
                             rdf:type owl:Class
                           ] ;
       rdfs:subClassOf [ rdf:type owl:Restriction ;
                         owl:onProperty :isVoiceOf ;
                         owl:allValuesFrom :Part
                       ] ;
       rdfs:comment "One of several parts that can be performed within the same staff (e.g. alto and soprano)."@en ;
       rdfs:label "Voice"@en .


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