ProposalRevision14

From Music Ontology Wiki

Jump to: navigation, search

Contents

[edit] Proposal Revision 1.14

As suggested in the mailing list: related to following all versions and releases of a abstract musical work (abstract song or album) and as a continuum of proposal revision 13 (also disussed in the mailing list). With the extensions described below it is better possible 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 will be all different recordings and re-recordings of a song. Or "Show ne all releases of that song." - the result will a list of record packages of maybe different medium types, release in different countries at different times. The following graphic should illustrate the changes:

Image:Mo-workflow ext.png

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

[edit] Recording Session concept

[edit] Description

To keep track of a specific recording session of e.g. a specific musician group, which is in general related to an abstract album. The property mo:recording binds all related single Recording instances of this recording session. mo:signal_group is the product of that recording session event with all produced Signal instances of the Recording instances.

[edit] 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:signal_group
              ] ;
      owl:equivalentClass
              [ a       owl:Restriction ;
                owl:minCardinality "1"^^xsd:int ;
                owl:onProperty mo:recording
              ] ;
      vs:term_status "unstable" . 
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" .
mo: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 signal group"^^xsd:string ;
      owl:InverseOf
              [ rdfs:label "is signal group of"^^xsd:string
              ] ;
      rdfs:range mo:SignalGroup ;
      rdfs:subPropertyOf event:product ;
      mo:level "2" ;
      vs:term_status "unstable" .

[edit] Example

TODO

[edit] Signal Group concept

[edit] Description

As a result of a RecordingSession the SignalGroup has all produces Signals (mo:signal) of it. It can also have a short cut to the related abstract album (mo:musicalWork) to skip the workflow part of the RecordingSession.

[edit] 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" .
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" .
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:Signal_group ;
      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" .

[edit] Examples

TODO

[edit] Release event concept

[edit] Description

The Release event concept takes a SignalGroup instance (mo:released_signal; as a product of a RecordingSession event or as a separate composition of single Signal instances of several SignalGroups from different RecordingSession events) and produces on or more RecordPackage instance(s) (mo:record_package; each of a specific medium) that is/are released a specific country at a specific time. The specific Release event should be related to a record label (mo:label).

[edit] Ontology code

mo:Release
      a       owl:Class ;
      rdfs:comment "This is the release event that gets as input factor a SignalGroup instance and procudes one or more RecordPackage 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" ;
      owl:equivalentClass
              [ a       owl:Restriction ;
                owl:minCardinality "1"^^xsd:int ;
                owl:onProperty mo:record_package
              ] ;
      owl:equivalentClass
              [ a       owl:Restriction ;
                owl:minCardinality "1"^^xsd:int ;
                owl:onProperty mo:released_signal
              ] ;
      vs:term_status "unstable" .
mo:label
      a       owl:FunctionalProperty ;
      rdfs:comment "This property relates a release to a specific label that releases for that release one or more record packages (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" .
mo:record_package
      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 record packages - one for a specific medium (e.g. CD, vinyl, Mp3)."^^xsd:string ;
      rdfs:domain mo:Release ;
      rdfs:label "has record package"^^xsd:string ;
      owl:InverseOf
              [ rdfs:label "is record package of"^^xsd:string
              ] ;
      rdfs:range mo:RecordPackage ;
      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:Release ;
      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" .

[edit] Examples

TODO

[edit] Record Package concept

[edit] Description

A RecordPackage is a the result of a Release event. So it contains on or more 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 RecordPackage is an official release it has also a catalogue number (mo:catalogue_number).

[edit] Ontology code

mo:RecordPackage
      a       owl:Class ;
      rdfs:comment "This the contain 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 "record package"^^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 record package of a release."^^xsd:string ;
      rdfs:domain mo:RecordPackage ;
      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" .
mo:record
      a       owl:ObjectProperty ;
      rdfs:domain mo:RecordPackage ;
      rdfs:label "has record"^^xsd:string ;
      owl:InverseOf
              [ rdfs:label "is record of"^^xsd:string
              ] ;
      rdfs:range mo:Record .

[edit] Examples

TODO


[edit] Track concept

[edit] Description

An extension to the Track concept to handle both related signals - the signal of the copy (mo:track_signal) and the original signal (mo:originated_signal), which is related to the Recording. Of course, these properties are exist in a certain kind, but maybe it is easier to access them in this way.

[edit] 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 record package."^^xsd:string ;
      rdfs:domain mo:Track ;
      rdfs:label "has originated signal"^^xsd:string ;
      rdfs:range mo:Signal ;
      mo:level "1" ;
      vs:term_status "unstable" .
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 " .

[edit] Examples

TODO

[edit] Counter property

[edit] Description

To keep track of the overall size of the instances of Record and RecordPackage. For a Record instance the counter is a track counter and for a RecordPackage instance the counter is a record counter. Maybe the specific counters can also be derived from this property.

[edit] Ontology code

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

[edit] Examples

TODO
Personal tools