Relationships: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
m (14 revision(s))
mNo edit summary
Line 1: Line 1:
{{DocumentationHeader|AdvancedRelationship}}
{{DocumentationHeader|AdvancedRelationship}} {{work in progress}}

=Advanced Relationships Documentation=

'''Status:''' ''This page is work in progress''


==Introduction==
==Introduction==


Advanced Relationships is a way to represent all the "miscellaneous" relationships between [[Artist]]s, [[Release]]s and [[Track]]s that are stored in the [[MusicBrainz Database|MusicBrainzDatabase]]. For example:
Advanced Relationships is a way to represent all the "miscellaneous" relationships between [[Artist]]s, [[Release]]s and [[Track]]s that are stored in the [[MusicBrainz Database]]. For example:
* The song [http://musicbrainz.org/track/271051c3-1a4c-4612-8c6e-2a5400e37b56.html Rockafella Skank] by Fatboy Slim includes a sample from the Just Brothers song [http://musicbrainz.org/track/0ad2aa31-cf5f-4ef4-93d8-4568d404323b.html Sliced Tomato].
* The song [[track:271051c3-1a4c-4612-8c6e-2a5400e37b56|Rockafella Skank]] by Fatboy Slim includes a sample from the Just Brothers song [[track:0ad2aa31-cf5f-4ef4-93d8-4568d404323b|Sliced Tomato]].
* [http://musicbrainz.org/showrel.html?type=artist&id=46550 Paul Di'Anno] was a member of [http://musicbrainz.org/showrel.html?type=artist&id=10042 Iron Maiden] from 1977 until 1981.
* [[artist:85994c53-062f-462e-95fd-3a521dd1fcd2|Paul Di'Anno]] was a member of [[artist:ca891d65-d9b0-4258-89f7-e6ba29d83767|Iron Maiden]] from 1977 until 1981.
* The Metallica album [http://musicbrainz.org/album/5997cf87-5225-4830-9edf-358638a24905.html St. Anger] was produced by [http://musicbrainz.org/artist/4f0730d0-fd52-4818-8a5d-f3f69ce8f378.html Bob Rock] & [http://musicbrainz.org/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab.html Metallica].
* The Metallica album [[release:5997cf87-5225-4830-9edf-358638a24905.html|St. Anger]] was produced by [[artist:4f0730d0-fd52-4818-8a5d-f3f69ce8f378.html|Bob Rock]] & [[artist:65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab.html|Metallica]].


All of this information is stored in a single table in the database, and there is a single user interface for adding new information. In this way, [[MusicBrainz]] has a fairly simple way to deal with extremely complicated data.
All of this information is stored in a single table in the database, and there is a single user interface for adding new information. In this way, [[MusicBrainz]] has a fairly simple way to deal with extremely complicated data.


==Getting Started==
==Getting Started==


There is a tutorial at [[How To Make Relationships|HowToMakeRelationships]].
There is a tutorial at [[How To Make Relationships]].


==Advanced Relationship Types==
==Advanced Relationship Types==


Each relationship entered by a user belongs to one [[Advanced Relationship Type|AdvancedRelationshipType]]. These types define:
Each relationship entered by a user belongs to one [[Advanced Relationship Type]]. These types define:
* Which entities will be related (artists, albums, tracks, etc)
* Which entities will be related (artists, albums, tracks, etc)
* What [[Advanced Relationship Attribute|AdvancedRelationshipAttribute]]s go along with the relationship
* What [[Advanced Relationship Attribute]]s go along with the relationship
* The [[Link Phrase|LinkPhrase]]s of the relationships, which describe how to write the relationship information in English sentences.
* The [[Link Phrase]]s of the relationships, which describe how to write the relationship information in English sentences.


For example, the advanced relationship type "[[Performer Relationship Type|PerformerRelationshipType]]" can be used to link an artist (for example, [http://musicbrainz.org/artist/618b6900-0618-4f1e-b835-bccb17f84294.html Eric Clapton]) to a track on which they performed (for example, [http://musicbrainz.org/track/64d0220a-0587-43c9-b7e3-809e8c06542b.html Runaway Train]). The definition of [[Performer Relationship Type|PerformerRelationshipType]] allows an optional attribute to specify the instrument he played ([[Instrument Relationship Attribute|InstrumentRelationshipAttribute]]), so you can say if he played guitar. The definition also says how to construct an English sentence out of this data, so that the website can display the words "Runaway Train was performed by Eric Clapton".
For example, the relationship type "[[Performer Relationship Type]]" can be used to link an artist (for example, [[artist:618b6900-0618-4f1e-b835-bccb17f84294|Eric Clapton]]) to a track on which they performed (for example, [[track:64d0220a-0587-43c9-b7e3-809e8c06542b.html|Runaway Train]]). The definition of [[Performer Relationship Type]] allows an optional attribute to specify the instrument he played ([[Instrument Relationship Attribute]]), so you can say if he played guitar. The definition also says how to construct an English sentence out of this data, so that the website can display the words "Runaway Train was performed by Eric Clapton".


These [[Advanced Relationship Type|AdvancedRelationshipType]]s are themselves simply entries in another database table. This means that new ones can be defined, old ones deleted, and existing ones modified through a relatively simple user-interface which does not require hacking the database internals. Since this data is much more important than any other individual entries, editing of [[Advanced Relationship Type|AdvancedRelationshipType]]s is limited to selected users, called [[Relationship Editor|RelationshipEditor]]s. There are more relationship editors than developers, and the process of adding a new relationship type is much simpler than adding a new database table, so this is a very fast way to expand and improve the [[MusicBrainz Database|MusicBrainzDatabase]].
These [[Advanced Relationship Type]]s are themselves simply entries in another database table. This means that new ones can be defined, old ones deleted, and existing ones modified through a relatively simple user-interface which does not require hacking the database internals. Since this data is much more important than any other individual entries, editing of [[Advanced Relationship Type]]s is limited to selected users, called [[Relationship Editor]]s. There are more relationship editors than developers, and the process of adding a new relationship type is much simpler than adding a new database table, so this is a very fast way to expand and improve the [[MusicBrainz Database]].


A list of all of the relationship types defined so far is kept at [[Advanced Relationship Type|AdvancedRelationshipType]]<code><nowiki></nowiki></code>s. That page also links to documentation for each individual type.
A list of all of the relationship types defined so far is kept at [[Advanced Relationship Type]]s. That page also links to documentation for each individual type.


==Artist Role Inheritance==
<span id="ARInheritance"></span>
==ArtistRoleInheritance==


There are now multiple levels at which an artist's role on a song can be recorded: you can relate the artist to the song, to the album, or to the band that recorded the song. So it's now non-trivial to figure out the full list of people who should be credited for any given track.
There are now multiple levels at which an artist's role on a song can be recorded: you can relate the artist to the song, to the album, or to the band that recorded the song. So it's now non-trivial to figure out the full list of people who should be credited for any given track.
# If the advanced relationship is applicable to all tracks on a release, put it on all the tracks, rather than on the release.
# If the relationship is applicable to all tracks on a release, put it on all the tracks, rather than on the release.
# If the advanced relationship is not applicable to all tracks, and you know which ones it applies to, put it on only those tracks.
# If the relationship is not applicable to all tracks, and you know which ones it applies to, put it on only those tracks.
# If the advanced relationship is not applicable to all tracks, and you don't know which ones it applies to, put it at release level. A basic effort to determine to which tracks the relationship is applicable is appreciated, however.
# If the relationship is not applicable to all tracks, and you don't know which ones it applies to, put it at release level. A basic effort to determine to which tracks the relationship is applicable is appreciated, however.
# If the credit is release level, and does not apply on a track by track basis (e.g., graphic design for the album's cover), then apply the advanced relationship to the release, not the tracks.
# If the credit is release level, and does not apply on a track by track basis (e.g., graphic design for the album's cover), then apply the relationship to the release, not the tracks.


'''Note:''' There are still releases that do only have release level advanced relationships, predating the discussions as to where Advanced Relationships should be attached. These still need to be corrected. If you find a release with such release level Advanced Relationships that can be moved to the tracks, please fix them.
'''Note:''' There are still releases that do only have release level advanced relationships, predating the discussions as to where Advanced Relationships should be attached. These still need to be corrected. If you find a release with such release level Advanced Relationships that can be moved to the tracks, please fix them.


{{AdvancedRelationshipFooter}}
{{AdvancedRelationshipFooter}}


[[Category:To Be Reviewed]] [[Category:Advanced Relationships]]
[[Category:To Be Reviewed]] [[Category:Advanced Relationships]]

Revision as of 09:28, 30 March 2009

Template:DocumentationHeader Template:work in progress

Introduction

Advanced Relationships is a way to represent all the "miscellaneous" relationships between Artists, Releases and Tracks that are stored in the MusicBrainz Database. For example:

All of this information is stored in a single table in the database, and there is a single user interface for adding new information. In this way, MusicBrainz has a fairly simple way to deal with extremely complicated data.

Getting Started

There is a tutorial at How To Make Relationships.

Advanced Relationship Types

Each relationship entered by a user belongs to one Advanced Relationship Type. These types define:

  • Which entities will be related (artists, albums, tracks, etc)
  • What Advanced Relationship Attributes go along with the relationship
  • The Link Phrases of the relationships, which describe how to write the relationship information in English sentences.

For example, the relationship type "Performer Relationship Type" can be used to link an artist (for example, Eric Clapton) to a track on which they performed (for example, Runaway Train). The definition of Performer Relationship Type allows an optional attribute to specify the instrument he played (Instrument Relationship Attribute), so you can say if he played guitar. The definition also says how to construct an English sentence out of this data, so that the website can display the words "Runaway Train was performed by Eric Clapton".

These Advanced Relationship Types are themselves simply entries in another database table. This means that new ones can be defined, old ones deleted, and existing ones modified through a relatively simple user-interface which does not require hacking the database internals. Since this data is much more important than any other individual entries, editing of Advanced Relationship Types is limited to selected users, called Relationship Editors. There are more relationship editors than developers, and the process of adding a new relationship type is much simpler than adding a new database table, so this is a very fast way to expand and improve the MusicBrainz Database.

A list of all of the relationship types defined so far is kept at Advanced Relationship Types. That page also links to documentation for each individual type.

Artist Role Inheritance

There are now multiple levels at which an artist's role on a song can be recorded: you can relate the artist to the song, to the album, or to the band that recorded the song. So it's now non-trivial to figure out the full list of people who should be credited for any given track.

  1. If the relationship is applicable to all tracks on a release, put it on all the tracks, rather than on the release.
  2. If the relationship is not applicable to all tracks, and you know which ones it applies to, put it on only those tracks.
  3. If the relationship is not applicable to all tracks, and you don't know which ones it applies to, put it at release level. A basic effort to determine to which tracks the relationship is applicable is appreciated, however.
  4. If the credit is release level, and does not apply on a track by track basis (e.g., graphic design for the album's cover), then apply the relationship to the release, not the tracks.

Note: There are still releases that do only have release level advanced relationships, predating the discussions as to where Advanced Relationships should be attached. These still need to be corrected. If you find a release with such release level Advanced Relationships that can be moved to the tracks, please fix them.

Template:AdvancedRelationshipFooter