I just gave a try at merging the different proposals (Simon's, Zazi's
and Antoine's) made on this mailing list for making the editorial part
of the music ontology (record, releases, etc.) more consistent. I also
tried to keep it as close as possible to future evolutions of the
Musicbrainz DB schema, and in particular the "cultural identifier"
work. I think a clarification of that part of MO should be the bulk of
its next release.
So here it is, all in RDF/Turtle with in-line comments detailing the
problems we try to address, and an example (Sgt. Pepper's Lonely
Hearts Club Band). The RDF is available in the motools SVN [1].
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix event: <http://purl.org/NET/c4dm/event.owl#> .
@prefix tl: <http://purl.org/NET/c4dm/timeline.owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix : <#> .
# Three entities to consider
# 1) Cultural identifier (e.g. "Sgt. Pepper")
# - Issued from a recording session lasting 129 days, starting on
the 6th of December 1966
# 2) Tracklist
# - A set of tracks: Track 1 is ... Track 2 is ...
# - One cultural identifier may have many tracklists
# 3) Release (e.g. UK on the 1st of June 1967, US on the 2nd of June 1967)
# - One tracklist may have many releases
# Relationships to existing MO concepts
# 1)
# mo:Signal has been used for it so far, but this is confusing
(we want something higher-level)
# We want to keep a track of a recording session event, which
product is this cultural identifier
# 2)
# Corresponds to our current mo:Record
# 3)
# Not handled yet. We can model that as another event.
# We need to reconsider the status of mo:release_type and
mo:release_status when adding it
# Existing level 1 MO stuff
mo:Track a owl:Class .
mo:Record a owl:Class .
mo:Signal a owl:Class .
mo:track a owl:ObjectProperty; rdfs:domain mo:Record; rdfs:range mo:Track .
# 1) Cultural identifier
# Based on Zazi's email,
http://groups.google.com/group/music-ontology-specification-group/browse_thread/thread/8e1ec6cc68e2c035
mo:RecordingSession
a owl:Class;
rdfs:subPropertyOf event:Event .
# an mo:RecordingSession can be decomposed in several
performances/recordings using event:sub_event to be described in
further details
# also, we should add it to the range of mo:performer, mo:engineer etc.
mo:Album
a owl:Class ;
rdfs:subClassOf mo:MusicalExpression . # Matches Musicbrainz
terminology, but not sure if it is an appropriate name
mo:produced_album
a owl:ObjectProperty;
rdfs:domain mo:RecordingSession; rdfs:range mo:Album .
# 2) Tracklist
mo:Tracklist
a owl:Class;
owl:equivalentClass mo:Record . # Do we need that? Or can we keep
on using mo:Record?
# Adding Zazi's trackcount property
mo:track_count
a owl:DatatypeProperty;
rdfs:range mo:Tracklist .
# Handling multi-disc releases
mo:sub_tracklist
a owl:ObjectProperty;
rdfs:domain mo:Tracklist;
rdfs:range mo:Tracklist .
# 3) Release events
mo:ReleaseEvent
a owl:Class;
rdfs:subClassOf event:Event .
mo:label
a owl:ObjectProperty;
rdfs:domain mo:ReleaseEvent;
rdfs:subPropertyOf event:agent .
mo:released_record
a owl:ObjectProperty;
rdfs:domain mo:ReleaseEvent;
rdfs:range mo:Record ;
rdfs:subPropertyOf event:factor .
mo:release
a owl:ObjectProperty;
rdfs:domain mo:Record;
rdfs:range mo:ReleaseEvent;
owl:inverseOf mo:released_record .
# EXAMPLE
:session
a mo:RecordingSession ;
event:place <http://dbpedia.org/resource/Abbey_Road_Studios> ;
event:time [ tl:start "1966-12-06" ; tl:duration "P129D" ] ;
mo:performer <http://dbpedia.org/resource/The_Beatles> ;
mo:produced_album :album .
:album
a mo:Album;
dc:title "Sgt. Pepper's Lonely Hearts Club Band" ;
owl:sameAs <http://dbpedia.org/resource/Sgt._Pepper's_Lonely_Hearts_Club_Band>
;
mo:published_as :original_tracklist, :cd_tracklist .
:original_tracklist
a mo:Tracklist;
dc:title "Sgt. Pepper's Lonely Hearts Club Band (original tracklist)";
mo:sub_tracklist :disc1, :disc2 ;
mo:release :uk, :us .
:disc1
a mo:Tracklist;
dc:title "Sgt. Pepper's Lonely Hearts Club Band (original
tracklist, disc 1)";
mo:track_count 7;
mo:track :splhc, :wlhmf, :lsd, :gb, :fh, :slh, :bbmk .
:disc2
a mo:Tracklist;
dc:title "Sgt. Pepper's Lonely Hearts Club Band (original tracklist)";
mo:track_count 6;
mo:track :wwy, :wsf, :lr, :gmgm, :splhcr, :dl .
:cd_tracklist
a mo:Tracklist;
dc:title "Sgt. Pepper's Lonely Hearts Club Band (CD tracklist)";
mo:track_count 13 .
:uk
a mo:ReleaseEvent;
event:place [ rdfs:label "UK" ];
event:time [ tl:at "1967-06-01" ] .
:us
a mo:ReleaseEvent;
event:place [ rdfs:label "US" ];
event:time [ tl:at "1967-06-02" ] .
Let me know what you think. I am not convinced by the naming of things
(especially mo:Album), but does this separation in three concepts
makes sense?
Cheers!
y
here are my solution of the proposed changes:
--------------------------------------------------------------------------
The recording session concept:
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:signalGroup
] ;
owl:equivalentClass
[ a owl:Restriction ;
owl:minCardinality "1"^^xsd:int ;
owl:onProperty mo:recording
] ;
vs:term_status "unstable" .
mo:recording
a owl:ObjectProperty ;
rdfs:comment "This property restricts the containing sub events
of a RecordSession to Recording instances"^^xsd:string ;
rdfs:domain mo:RecordingSession ;
rdfs:label "recording"^^xsd:string ;
rdfs:range mo:Recording ;
rdfs:subPropertyOf event:sub_event ;
mo:level "2" ;
vs:term_status "unstable" .
mo:signalGroup
a owl:ObjectProperty ;
rdfs:comment "This property maps the product of a RecordSession
to a SignalGroup instance."^^xsd:string ;
rdfs:domain mo:RecordingSession ;
rdfs:label "signalgroup"^^xsd:string ;
rdfs:range mo:SignalGroup ;
rdfs:subPropertyOf event:product ;
mo:level "2" ;
vs:term_status "unstable" .
The recording session event produces a signal group from a set of
recordings and connects the MusicalWork instance to the produced
SignalGroup instance.
---------------------------------------------------------------------------
The signal group concept:
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:musicalWork
] ;
vs:term_status "unstable" .
mo:musicalWork
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 "musical work"^^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:SignalGroup ;
rdfs:label "signal"^^xsd:string ;
rdfs:range mo:Signal ;
mo:level "2" ;
vs:term_status "unstable" .
This is the pre-release-container to hold a set of signals that can be
included into different releases.
---------------------------------------------------------------------------
The release event concept:
mo:Release
a owl:Class ;
rdfs:comment "This is the release event that gets as input factor
a SignalGroup instance and procudes one ore 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:recordPackage
] ;
owl:equivalentClass
[ a owl:Restriction ;
owl:minCardinality "1"^^xsd:int ;
owl:onProperty mo:releasedSignal
] ;
vs:term_status "unstable" .
mo:label
a owl:ObjectProperty ;
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 "release label"^^xsd:string ;
rdfs:range mo:Label ;
rdfs:subPropertyOf event:agent ;
mo:level "1" ;
vs:term_status "unstable" .
mo:recordPackage
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 "produced record package"^^xsd:string ;
rdfs:range mo:RecordPackage ;
rdfs:subPropertyOf event:product ;
mo:level "1" ;
vs:term_status "unstable" .
mo:releasedSignal
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 single that are from different signal
groups."^^xsd:string ;
rdfs:domain mo:Release ;
rdfs:label "released signal set"^^xsd:string ;
rdfs:range mo:SignalGroup , mo:Signal ;
rdfs:subPropertyOf event:factor ;
mo:level "1" ;
vs:term_status "unstable" .
The release event produces record packages from one specific signal
group or a selection of single signals, which are included into
different SignalGroup instances (maybe for a compilation or something
like that). I think the range of releasedSignal needs therefore a
specific restriction (union: SignalGroup or (Set of Signals)).
---------------------------------------------------------------------------
The record package concept:
mo:RecordPackage
a owl:Class ;
rdfs:comment "This the container that holds one ore more Record
instances of a specific medium (CD, Vinyl, Mp3). Furthermore, it has
relations 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 "catalogue number"^^xsd:string ;
rdfs:range xsd:string ;
mo:level "1" ;
vs:term_status "unstable" .
mo:record
a owl:ObjectProperty ;
rdfs:comment "This propery connects to Record instances that are
included into a record package."^^xsd:string ;
rdfs:domain mo:RecordPackage ;
rdfs:label "record"^^xsd:string ;
rdfs:range mo:Record ;
mo:level "1" ;
vs:term_status "unstable" .
This is the container to hold one or more Record instances.
---------------------------------------------------------------------------
The track concept (only extensions and changes):
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 "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 "track signal"^^xsd:string ;
rdfs:range mo:Signal ;
mo:level "1" ;
vs:term_status "unstable " .
I like to associate the underlying track signal and also the signal
where this "copy" comes from. Of course, there exists also the property
encodes for MusicalItem, where signal mapping is covered, but I think it
is better placed at the Track domain.
Furthermore, I moved the Track class as a sibiling of Record and not a
sub class, because this classes should be disjoint (as it was also in
discussion).
---------------------------------------------------------------------------
The counter property for record and track counting:
mo:count
a owl:FunctionalProperty ;
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 "counter"^^xsd:string ;
rdfs:range xsd:integer ;
mo:level "1" ;
vs:term_status "unstable " .
---------------------------------------------------------------------------
I'm not sure about the usage of the minimal cardinality restriction and
the some values from restriction, if I like to say that there must at
least one value of that property from that class and only from that
class. Per definition someValueFrom says that there must at least one
value from that class, but the property can also have values from other
classes.
Cheers zazi
here is a graphical representation of the current proposals:
http://www1.inf.tu-dresden.de/~s9736463/mo-workflow_ext.png
just for integrating the new extensions into the production/publishing
workflow.
Cheers zazi
I think it is OK to leave one level of indirection.
:work a mo:MusicalWork.
:recording_session a mo:RecordingSession; event:factor :work;
event:product :signal_group; mo:performer ...
We don't need every single property linking any two concepts in the
ontology IMHO (we already have quite a lot of terms...)
Yes, it might be confusing. A release is not a release event.
On that, I will comment on your picture in your next email ;-)
The thing is try to keep the terms we have now, which are quite well
suited for online releases, and just add the minimal amount of terms
that would allow us to deal more neatly with albums/releases. I
*think* there is still room for mo:Record, even when there is a
mo:ReleaseEvent happening. However, it implies a bit of shuffling in
your workflow, which I will try to draw as well :)
>>
>>> 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 "track signal"^^xsd:string ;
>>> Â Â Â rdfs:range mo:Signal ;
>>> Â Â Â mo:level "1" ;
>>> Â Â Â vs:term_status "unstable " .
>>>
>>
>> inverse of mo:published_as
>
> Why? This property should link to Signal behind the Track, e.g. the 128
> kbps encoded Mp3 signal, which has a poorer quality than its high
> quality "master" signal (from e.g. a SignalGroup).
> So originated_signal links to the "master" signal, where track_signal
> links to the encoded signal (and replaces maybe the encodes property
> from MusicalItem).
>
Hmm. You can have two distinct mo:Signal for these two signals (the
original one and the 128 kbps encoded mp3 signal).
:signal1 mo:published_as :track1 .
:track1 mo:available_as <test.mp3> .
<test.mp3> mo:encodes :signal2 .
:signal2 is the deteriorated signal, and :signal1 is the original one.
So I am not sure we need more terms to deal with that?
>>
>> The good thing is that this published_as property has quite loose
>> semantics. If we just add SignalGroup to its range, then SignalGroup
>> is just "the set of audio stuff that gets out of an entire recording
>> session". Then, records linked to that SignalGroup are just "sets of
>> similar physical items that are in some way derived from the
>> SignalGroup".
>>
>>> I like to associate the underlying track signal and also the signal
>>> where this "copy" comes from. Of course, there exists also the property
>>> encodes for MusicalItem, where signal mapping is covered, but I think it
>>> is better placed at the Track domain.
>>
>> Yes, mo:encodes is really aimed to capture the relationship between an
>> mp3 and the audio signal it encodes.
>>
>>> Furthermore, I moved the Track class as a sibiling of Record and not a
>>> sub class, because this classes should be disjoint (as it was also in
>>> discussion).
>
> Is this change okay?
>
Yes, I think so. This statement was a bit weird in the first place.
>>>
>>> ---------------------------------------------------------------------------
>>>
>>> The counter property for record and track counting:
>>>
>>> mo:count
>>>    a    owl:FunctionalProperty ;
>>> Â Â Â 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 "counter"^^xsd:string ;
>>> Â Â Â rdfs:range xsd:integer ;
>>> Â Â Â mo:level "1" ;
>>> Â Â Â vs:term_status "unstable " .
>>>
>>> ---------------------------------------------------------------------------
>>>
>>
>> Cool :)
>
> I changed it to DatatypeProperty, because I misinterpreted the usage of
> FunctionalProperty maybe.
>
Yes, this should be a data type property.
>>
>>> I'm not sure about the usage of the minimal cardinality restriction and
>>> the some values from restriction, if I like to say that there must at
>>> least one value of that property from that class and only from that
>>> class. Per definition someValueFrom says that there must at least one
>>> value from that class, but the property can also have values from other
>>> classes.
>>>
>>
>> Hmm. What property are you thinking of, here?
>
> These properties where I now defined the cardinality restrictions, but
> I'm sure if it makes in these cases a difference, when the ranges just
> include one class and I define a restriction with someValuesFrom,
> because there can't be instances of other classes for values of the
> restricted property - if they exists they must be from that class and
> with the someValuesFrom restriction I say that there must exist at least
> one instance from the range class of that property.
>
I'll take a deeper look when we include these changes in the ontology.
Cheers, and thanks again for all that! I think we're getting close!
y
Yves Raimond schrieb:
Okay, if we attach the musical work as a factor to the RecordingSession
event it makes from the top-down approach no difference. However, how
would be the linking done if we have as input our mp3-file, which we
like to follow backwards to its musical work origin?
Of course, mo:Record is still part of the modified production/release
workflow.
I know that is currently also possible, but this is maybe a more direct
link to the signals.
:track1 mo:originated_signal signal1 .
:track mo:track_signal :signal2 ;
With that modelling it is easier to change the carrier medium of the
track(-signal), without changing the track_signal. Nevertheless, I think
in general, through every carrier medium change the track_signal will
also change, and there is at last for every track on a specific medium a
separate instance. So let us keep the existing modelling for that part
;) and skip these two Track properties.
Cheers zazi
Thank you for your interesting answer and suggestions.
George Fazekas schrieb:
> Hello Zazi,
>
> Sorry for not replying to you before, I had lots of things to catch up
> with.
>
> I have read these mails with great interest and try to think of some
> constructive critique from
> two points of view: how extensible it is and whether the new concepts
> map to record production practices.
> I have to admit though that the life of music after the studio is not
> at all my expertise.... so be sceptic.
>
> First, the Recording Session concept has three fairly common uses:
Yes, of course, generally one can think about different uses of the
RecordingSession concept. My intention was just the third one ;)
>
> #1 The recording of a particular song (precisely the performance(s) of
> it) consisting of several physical recording events.
I think recordings for a RecordingSession should be these recordings
that cover a whole song (in the production/release workflow). So they
are the arrangement of single recordings of the parts of a song (e.g.
voice, drums, guitar).
>
> #2 A single event with strictly limited time span (usually much
> shorter than 24 hours), where several
> people come together to perform and assist. This may or may not be
> recorded.
> (Though the primary purpose is generally to make recordings, this is
> not always the case, or more often the recordings are discarded.)
This is the case of a jam session. I don't if it is necessary to keep
that kind of information. In my proposal the RecordingSession can have a
place (generally a studio) and a time (maybe a specific day, or a couple
of days, where the single recordings happened - so the RecordingSession
temporal information covers the range between the first recording and
the last recording of a MusicalWork realisation).
However, the aim of a RecordingSession in my proposal should be to
produce a SignalGroup that is linked to its abstract MusicalWork (during
the factor property of that event (as Yves suggest it) or during a
separate property for the signal group concept (my suggestion)).
>
> #3 A set of events (could span several days or months) where
> recordings were made which are usually associated with one or more
> particular released mo:Record.
That's more or less how I like to define it.
>
>
>
> The 1st is used by artists/producers, but #2 is significantly more
> common though.
> #3 is more of what people further up the workflow chain (eg Label/
> Distributor types) talk about.
Here is a small gap in the current modelling of MO.
>
> The original MO workflow description can cover all the above cases
> very well and can be mapped on detailed record production practices.
Yes, but a couple of people and I think that there is a gap in the
release workflow.
> However, I found it difficult to match the new concepts. If I
> understand right, the use case is: be able to collect things for a
> certain release event.
No, to have the opportunity that release R1 in country C1 includes the
same signals (recordings) of SignalGroup SG1 as release R2 in country C2
and that track T1 of compilation COMP1 encodes also signal S1 of SG1.
> I think this could be done simply as an extension to existing MO
> concepts, rather than rearranging them.
Currently, for it is a kind of parallel workflow:
1. produce a song and record it; the result is a signal, which a publish
at my personal website (so it is no offical release over a record
label; no ReleaseEvent is necessary)
2. the signal of the produced song should be published at serveral
release in different countries (so it is an offical release and has to
follow the ReleaseEvent)
>
> For consistency, I would call all container types xxxxxGroup: e.g.
> SignalGroup :
Good idea.
> a set of signals associated with the release (maybe recorded in very
> different conditions wrt time, different sessions etc.. )
>
> RecordingGroup : (instead of recording session) :
> a set of recording events, e.g. I record a drum-kit with 8
> microphones, a song or a set of songs. (the use of session makes this
> very confusing)
Okay, but couldn't the recording of a song also a single recording that
uses the sub_event property to hold all recordings that are include into
that song?
>
> RecordGroup :
> a set of records published together (?), e.g. a group of mo:Tracks
Okay, so you tend to rename Record to RecordGroup?
>
> would keep the RecordPackage concept for the broader description which
> includes the libretto etc.. plus can model e.g. box sets by referring
> to several
> RecordGroups.
Yes, of course, this is necessary and that was also my intention to link
the libretto, cover art etc. as it was proposed in a past answer.
>
> I would keep mo:Track as a subclass of Record and the mo:published_as
> shortcut property intact.
Can you explain your intention here a little bit more in detail. I don't
understand why to keep Track as a subclass of Record. Okay, the
published_as property can be used by both concepts, but a Record (or
RecordGroup) is maybe the publication of a SignalGroup and a Track is
the publication of a single Signal. Furthermore, if we like to establish
the relation from RecordPackage to Record (RecordGroup), we can not link
directly Tracks to a RecordPackage because the tracks a part of a record
that is part of the record package.
>
> This might be a very production centric view, and may have several
> flaws in your use case, but it sounds more logical to me.
> A uniform way of expressing collections or container types would be
> easy to introduce for any concept.
> What about a group of scores or lyrics booklets released at a specific
> time...
I though that a libretto is a group of lyrics.
> Also, we should be able to group things together flexibly in an
> independent hierarchy when needed.
> e.g. it is rarely the case that a particular session produces a
> particular signal group which is released. It is more likely a
> composition from
> a subset of several recording groups (sessions) or samples obtained
> elsewhere.
> hope this makes some sense.
The current design of the releasedSignal property is that the value can be
1. a set if single signals from different SignalGroup; this is generally
useful for compilations that one know the original of a specific track
("this track is taken from the album ...")
2. a single SignalGroup; to keep the relation to an abstract album
(MusicalWork); during the ReleaseEvent the signal-track-mapping will be
done to every medium-specific record package, e.g. record package A
consists of two vinyl Records that include 12 signals from the
SignalGroup and record package B consists of one CD Record that includes
all 15 signals from the SignalGroup (so it has e.g. all bonus tracks).
Finally, the goal of the proposal (which was more or less mentioned by a
couple of people before I published my opinion) is to keep the linkage
between a single release track of a specific recorded signal that
derives from an abstract album (MusicalWork). So when I search for
"Transmission" from Joy Division, I get just one result and browsing
through this result I can get all releases (medium-independent
ReleaseEvents in different countries, which can be the album where
"Transmission" is originally available or compilations (e.g. the sound
track from the film "Control", where a cover-version from that track is
available) where this track is published on and furthermore all mixes,
remixes, re-recordings etc.
... and to reply also to your next email ;)
> one more small thing..
>
> maybe it would be more clear to call RecordPackage -> ReleasePackage
> so it's explicit that it refers to things released by the event, a
> pink panther, a gift voucher...
> maybe shouldn't be a musical manifestation at all just a
> frbr:Manifestation ...(?)
Good idea, but then we have also to generalize the ReleaseEvent. I don't
if these two classes make the ground for a separate ontology. Maybe an
already existing ontology covers the release/publishing workflow and we
can reuse that concepts or expand them for the music domain.
Cheers zazi
>
> best,
> George
>
Yes, I've read that article. In my current definitions I left out the
inverse properties, because it was a little bit unclear how to define
this in my specific solution (but I think you know how to do that ;) ).
However, I prefer that design pattern, because it simplifies the
complexity of an ontology.
Regarding to that specific backward linking I like to explain an example:
During the analysis of my personal collection the MIR systems discovers
a new album that don't exists already in its huge distributed database
(therefore it has to request all specific services and datasets, where
it gets its information). So the systems likes to create a new entry for
that album. Therefore, is also the abstract album (MusicalWork) a part.
So it has to create an abstract album, without the production
information. So I have to by-pass the whole production workflow and
directly create a "working draft" instance of that abstact album
(MusicalWork). So I think it is a better place to provide that by-pass.
Okay, in this specific case the releated SignalGroup is also just a
"working draft" instance, because the real SignalGroup (model) isn't
available in the database.
Do you know what I mean? ;)
Cheers zazi