ProposalRevision14

= Proposal Revision 1.14 =

As suggested in the mailing list: the following concept proposals should enable to relate (find) all versions and mo:Release instances of an abstract musical work (mo:MusicalWork, abstract song or album). This idea is a continuum of proposal revision 13 (also discussed in the mailing list). With the extensions described below it is probably easier to map services like discogs to MO and to enable queries like "Show me all versions that are produced to that (abstract) song." - the result should show all different recordings and re-recordings of a song. Or "Show me all releases of that song." - the result should be a list of mo:Release instances of maybe different mo:Medium types that are released in different countries at different times. The following graphic should illustrate the changes:



More extensions are:
 * mo:Playlist (drawn in several papers, but not implement yet), which should also handle things like song sequences - so when shuffle mode is enable it do not destroy that specific sequence while mixing the playlist
 * mo:Mood as a hook for a mood ontology/taxonomy

Description
To keep track of a specific mo:RecordingSession event of e.g. a specific mo:MusicGroup, which is in general related to an abstract album (mo:MusicalWork). The property mo:recording (currently event:sub_event) could bind all related single mo:Recording instances of this mo:RecordingSession event. mo:produced_signal_group is the product of that mo:RecordingSession event with all produced mo:Signal instances of the mo:Recording instances.

Ontology code
mo:RecordingSession a      owl:Class ; rdfs:comment "This Class is the composite of several recordings, which should hold a MusicalWork instance with several Movement instances."^^xsd:string ; rdfs:label "recording session"^^xsd:string ; rdfs:subClassOf event:Event ; mo:level "2" ; owl:equivalentClass [ a      owl:Restriction ; owl:minCardinality "1"^^xsd:int ; owl:onProperty mo:produced_signal_group ] ;     owl:equivalentClass [ a      owl:Restriction ; owl:minCardinality "1"^^xsd:int ; owl:onProperty mo:recording ] ;     vs:term_status "unstable".

=> The restrictions aren't in the Music Ontology 2.0 release currently

mo:recording a      owl:FunctionalProperty ; rdfs:comment "This property restricts the containing sub events of a RecordSession to Recording instances"^^xsd:string ; rdfs:domain mo:RecordingSession ; rdfs:label "has recording session"^^xsd:string ; owl:InverseOf [ rdfs:label "is recording session of"^^xsd:string ] ;     rdfs:range mo:Recording ; rdfs:subPropertyOf event:sub_event ; mo:level "2" ; vs:term_status "unstable". => The mo:recording property isn't a part of the Music Ontology 2.0 release, please use event:sub_event instead

mo:produced_signal_group a      owl:FunctionalProperty ; rdfs:comment "This property maps the product of a RecordSession to a SignalGroup instance."^^xsd:string ; rdfs:domain mo:RecordingSession ; rdfs:label "has produced signal group"^^xsd:string ; owl:InverseOf [ rdfs:label "is produced signal group of"^^xsd:string ] ;     rdfs:range mo:SignalGroup ; rdfs:subPropertyOf event:product ; mo:level "2" ; vs:term_status "unstable".

=> The inverse property isn't in the Music Ontology 2.0 release currently

Example
See here.

Description
As a result of a mo:RecordingSession instance the mo:SignalGroup concept knows all produces mo:Signal instances (mo:signal) of it. It can also have a short cut to the related abstract album (mo:MusicalWork instance; currently with frbr:realizationOf) to skip the workflow part of the mo:RecordingSession.

Ontology code
mo:SignalGroup a      owl:Class ; rdfs:comment "This Class is the composite of several Signal instances, that are the result of one RecordSession."^^xsd:string ; rdfs:label "signal group"^^xsd:string ; rdfs:subClassOf mo:MusicalExpression ; mo:level "2" ; owl:equivalentClass [ a      owl:Restriction ; owl:minCardinality "1"^^xsd:int ; owl:onProperty mo:signal ] ;     owl:equivalentClass [ a      owl:Restriction ; owl:cardinality "1"^^xsd:int ; owl:onProperty mo:musical_work ] ;     vs:term_status "unstable".

=> The restrictions aren't in the Music Ontology 2.0 release currently

mo:musical_work a      owl:ObjectProperty ; rdfs:comment "This property releates a signal group to is musical work e.g. a production of an album to its abstract album, because the artist can also record an album and that concludes into a new signal group."^^xsd:string ; rdfs:domain mo:SignalGroup ; rdfs:label "has musical work"^^xsd:string ; owl:InverseOf [ rdfs:label "is musical work of"^^xsd:string ] ;     rdfs:range mo:MusicalWork ; rdfs:subPropertyOf event:factor ; mo:level "1" ; vs:term_status "unstable".

=> The mo:musical_work property isn't a part of the Music Ontology 2.0 release, please use frbr:realizationOf instead.

mo:signal a      owl:ObjectProperty ; rdfs:comment "This property is the hook for a set of Signal instances. It should hold at least one Signal instance."^^xsd:string ; rdfs:domain mo:SignalGroup ; rdfs:label "has signal"^^xsd:string ; owl:InverseOf [ rdfs:label "is signal of"^^xsd:string ] ;     rdfs:range mo:Signal ; mo:level "2" ; vs:term_status "unstable".

=> The inverse property isn't in the Music Ontology 2.0 release currently

Examples
See here, here and here.

Description
The mo:ReleaseEvent concept takes a mo:SignalGroup instance (mo:released_signal; as a product of a mo:RecordingSession event or as a separate composition of single mo:Signal instances of several mo:SignalGroup instances from different mo:RecordingSession events) and produces on or more mo:Release instance(s). Each of them may consist of one or more mo:Record instance(s) that has/have a specific dcterms:MediaType (see Media Types). Furthermore, a release is releated to its mo:ReleaseEvent instance via mo:release). Such a release event mainly addresses that (a) release(s) is/are released in a specific country at a specific time.

Ontology code
mo:ReleaseEvent a      owl:Class ; rdfs:comment "This is the release event that gets as input factor a SignalGroup instance and produces one or more Release instance(s), which contains one ore more Record instances of a specific ReleaseType."^^xsd:string ; rdfs:label "release event"^^xsd:string ; rdfs:subClassOf event:Event ; mo:level "1" ; vs:term_status "unstable".

mo:release a      owl:ObjectProperty ; rdfs:comment "This is the product relation of a release event. It can be used to model a release of a set of signals (maybe from a signal group to get its relation to musical work) that will be released in a specific country at a specific date. This result can also be a set of releases - one for a specific medium (e.g. CD, vinyl, Mp3)."^^xsd:string ; rdfs:domain mo:ReleaseEvent ; rdfs:label "has release event"^^xsd:string ; owl:InverseOf [ rdfs:label "is release event of"^^xsd:string ] ;     rdfs:range mo:Release ; rdfs:subPropertyOf event:product ; mo:level "1" ; vs:term_status "unstable".

mo:released_signal a      owl:ObjectProperty ; rdfs:comment "With that property it is possible to attach a complete group of signals (SignalGroup) to a release or just a fine selection of single signals that are from different signal groups."^^xsd:string ; rdfs:domain mo:ReleaseEvent ; rdfs:label "has released signal set"^^xsd:string ; rdfs:range mo:SignalGroup, mo:Signal ; rdfs:subPropertyOf event:factor ; mo:level "1" ; vs:term_status "unstable".

=> The mo:release_signal property isn't a part of the Music Ontology 2.0 release, please use event:factor instead

Examples
See here, here, here and here.

Description
A mo:Release instance is a the result of a mo:ReleaseEvent instance. So it contains on or more mo:Record instance(s) (mo:record) of a specific medium. This package should be related with properties like cover-art, libretto etc. (not implemented yet). As a mo:Release is an official release it has also a catalogue number (mo:catalogue_number). A specific mo:Release instance should be related to a mo:Label (mo:label).

Ontology code
mo:Release a      owl:Class ; rdfs:comment "This is the concept that holds one or more Record instances of a specific medium (CD, Vinyl, Mp3). Furthermore, it has releations to the cover-art, libretto etc."^^xsd:string ; rdfs:label "release"^^xsd:string ; rdfs:subClassOf mo:MusicalManifestation ; mo:level "1" ; vs:term_status "unstable". mo:catalogue_number a      owl:FunctionalProperty ; rdfs:comment "This is the catalogue number of a specific release of a release event."^^xsd:string ; rdfs:domain mo:Release ; rdfs:label "has catalogue number"^^xsd:string ; owl:InverseOf [ rdfs:label "is catalogue number of"^^xsd:string ] ;     rdfs:range xsd:string ; mo:level "1" ; vs:term_status "unstable".

=> The inverse property isn't currently in the Music Ontology 2.0 release.

mo:record a      owl:ObjectProperty ; rdfs:domain mo:Release ; rdfs:label "has record"^^xsd:string ; owl:InverseOf [ rdfs:label "is record of"^^xsd:string ] ;     rdfs:range mo:Record.

=> The inverse property isn't currently in the Music Ontology 2.0 release.

mo:label a      owl:FunctionalProperty ; rdfs:comment "This property relates a release to a specific label that releases a signal group as one or more release(s) (of maybe a specific medium)."^^xsd:string ; rdfs:domain mo:Release ; rdfs:label "has label"^^xsd:string ; owl:InverseOf [ rdfs:label "is label of"^^xsd:string ] ;     rdfs:range mo:Label ; rdfs:subPropertyOf event:agent ; mo:level "1" ; vs:term_status "unstable".

=> The inverse property isn't in the Music Ontology 2.0 release currently

Examples
See here, here, here and here.

Description
An extension to the mo:Track concept to handle both related mo:Signal instances - the mo:Signal instance of the copy (mo:track_signal, currently mo:encodes) and the original mo:Signal instance (mo:originated_signal, currently mo:publication_of and its inverse property mo:published_as), which is related to the specific mo:Recording instance. Of course, these properties exist in a certain kind, but maybe it is easier to access them in this way (see this part of the email discussion).

=> Note: It is already possible to model these relations somehow with the Music Ontology (see descriptions and hints). Hence, there might be no need to introduce these new properties.


 * signal1 mo:published_as :track1.
 * track1 mo:available_as .

 mo:encodes :signal2.


 * signal2 is the deteriorated signal, and :signal1 is the original one.

Ontology code
mo:Track a      owl:Class ; rdfs:comment "A track on a particular record" ; rdfs:isDefinedBy mo: ; rdfs:label "Track" ; rdfs:subClassOf mo:MusicalManifestation ; mo:level "1" ; vs:term_status "stable".

mo:orginated_signal a      owl:ObjectProperty ; rdfs:comment "This property links to the originated signal of that track. This enable mappings like signal 3 of this signal group relates to track 4 at cd 1 (as Record instance) of this release."^^xsd:string ; rdfs:domain mo:Track ; rdfs:label "has originated signal"^^xsd:string ; rdfs:range mo:Signal ; mo:level "1" ; vs:term_status "unstable".

=> The mo:originated_signal property isn't a part of the Music Ontology 2.0 release, please use mo:publication_of or its inverse property mo:published_as instead

mo:track_signal a      owl:ObjectProperty ; rdfs:comment "This property links to the signal behind the track, often this signal is of lesser quality then the master signal."^^xsd:string ; rdfs:domain mo:Track ; rdfs:label "has track signal"^^xsd:string ; rdfs:range mo:Signal ; mo:level "1" ; vs:term_status "unstable ".

=> The mo:track_signal property isn't a part of the Music Ontology 2.0 release, please use mo:encodes and mo:available_as (to model the item relation) instead

Examples
See here and here.

Description
To keep track of the overall size of the instances of mo:Record and mo:Release. For a mo:Record instance the counter is a track counter (currently mo:track_count) and for a mo:Release instance the counter is a record counter (currently mo:record_count). Maybe the specific counters can also be derived from this property.

Ontology code
mo:count a      owl:DataTypeProperty ; rdfs:comment "This is a counter property for releases (as record counter) and records (as track counter)."^^xsd:string ; rdfs:domain mo:Record, mo:Release ; rdfs:label "has count"^^xsd:string ; rdfs:range xsd:integer ; mo:level "1" ; vs:term_status "unstable ".

=> The mo:count property isn't a part of the Music Ontology 2.0 release, please use mo:record_count and mo:track_count instead 

Examples
See here, here and here for record counter. See here and here for track counter. See here for an example that include both types.