# The pattern on one real score: the solo violin part of the first movement of Vivaldi's 'Spring'.
# The part is played by one instrument, carries one voice, and divides into a section and a
# homogeneous fragment - the opening ritornello, where clef, metric and tempo hold throughout.
# Metric, tempo, staff and MIDI program are integers because the pattern declares them so.

@prefix scorepart: <https://purl.org/andreapoltronieri/scorepart/> .
@prefix ex: <https://w3id.org/ontoboard/example/scorepart#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:SoloViolinPart a owl:NamedIndividual , scorepart:Part ;
    rdfs:label "the solo violin part of Vivaldi's 'Spring', RV 269" ;
    scorepart:hasFragment ex:OpeningRitornello ;
    scorepart:hasSection ex:FirstMovementAllegro ;
    scorepart:hasStaff "1"^^xsd:int ;
    scorepart:hasVoice ex:UpperVoice ;
    scorepart:isPlayedBy ex:SoloViolin .

ex:OpeningRitornello a owl:NamedIndividual , scorepart:HomogeneousFragment ;
    rdfs:label "the opening ritornello, bars 1-13: treble clef, 4/4, Allegro" ;
    scorepart:hasClef "treble" ;
    scorepart:hasMetric "4"^^xsd:int ;
    scorepart:hasTempo "108"^^xsd:int .

ex:FirstMovementAllegro a owl:NamedIndividual , scorepart:Section ;
    rdfs:label "the first movement, Allegro in E major" .

ex:UpperVoice a owl:NamedIndividual , scorepart:Voice ;
    rdfs:label "the upper voice, which carries the melody" .

ex:SoloViolin a owl:NamedIndividual , scorepart:Instrument ;
    rdfs:label "solo violin, General MIDI program 41" ;
    scorepart:hasMidiProgram "41"^^xsd:int .

# Only one direction of each inverse pair is asserted: hasFragment/isFragmentOf, hasSection/isSectionOf, hasVoice/isVoiceOf, isPlayedBy/playsPart. A reasoner adds the other.
