Relationships: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(→‎History: Spacing + punctuation fix)
(Removing what I feel was redundant; cleaning up internal links. Please revieww, thanks.)
Line 9: Line 9:
|}
|}


An advanced relationship is a way to represent all the various inter-relationships between [[MusicBrainz Entity|entities]], as well as relationships from [[MusicBrainz Entity|entities]] to information and resources found outside of the [[MusicBrainz Database|MusicBrainz database]].
An advanced relationship is a way to represent all the various inter-relationships between [[MusicBrainz Entity|entities]], as well as relationships from entities to information and resources found outside of the [[MusicBrainz Database|MusicBrainz database]].


For example:
For example:
* 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]].
* 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]].
* [[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.
* [[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 [[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]].
* The Metallica album [[release:5997cf87-5225-4830-9edf-358638a24905|St. Anger]] was produced by [[artist:4f0730d0-fd52-4818-8a5d-f3f69ce8f378|Bob Rock]] & [[artist:65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab|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, [[About MusicBrainz|MusicBrainz]] has a fairly simple way to deal with extremely complicated data.


==Getting Started==
==Getting Started==
Line 24: Line 24:
==Advanced Relationship Types==
==Advanced Relationship Types==


Each relationship entered by a user belongs to one [[Advanced Relationship Type]]. These types define:
Each relationship entered by a user belongs to one [[:Category:Relationship Type|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]]s go along with the relationship
* What [[:Category:Relationship Attribute|attributes]] go along with the relationship
* The link phrases of the relationships, which describe relationship information in an English sentence.
* The link phrases of the relationships, which describe relationship information in an English sentence.


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".
For example, [[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|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".


==Creating and editing relationships==
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]].


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 and attributes is limited to selected users, called [[Relationship Editor]]s. They implement new relationships and changes to existing relationships following the passage of a [[Proposals|proposal]] to do so.
[[:Category:Relationship Type|Relationship type]]s includes a list of all of the relationship types currently defined, as well as documentation for each individual relationship type.

While there are very few relationship editors, anyone can propose new relationships or changes to existing relationships, using said [[Proposals|proposal process]]. Though most editors are not able to ''directly'' edit the types of advanced relationships, it can be useful to know what [[Advanced Relationship Attribute Syntax]] itself supports, as it will be used to implement any relationship proposal which passes the process.


==Style==
==Style==

Please see [[Advanced Relationship Style]].
Please see [[Advanced Relationship Style]].

==Creating and editing relationships==
The types and attributes of advanced relationships are managed by [[Relationship Editor]]s. They implement new relationships and changes to existing relationships following the passage of a [[Proposals|proposal]] to do so.

While there are very few [[Relationship Editor]]s, anyone can propose new relationships or changes to existing relationships, using the [[Proposals|proposal process]]. While most editors are not able to directly edit the types of advanced relationships, it can be useful to know what [[Advanced Relationship Attribute Syntax|advanced relationship attribute syntax]] itself supports, as it will be used to implement any relationship proposal which passes RFV.


==History==
==History==
Advanced Relationships were first officially proposed [[How Advanced Relationships Works|here]]. [[User:DaveEvans|Dave Evans]] created the database structure to allow relationships, and wrote tools for allowing the user to define a type of relationship. However, the code for linking two entities together and the UI to manipulate relationships themselves was left undone.


Advanced relationships were first officially proposed [[How Advanced Relationships Works|here]]. [[User:DaveEvans|Dave Evans]] created the database structure to allow relationships, and wrote tools for allowing the user to define a type of relationship. However, the code for linking two entities together and the UI to manipulate relationships themselves was left undone.
In November of 2004, [[User:RobertKaye|Robert Kaye]] took over working on the user interface and [[User:DonRedman|Don Redman]] became the [[Proposals|Idea Champion]] for advanced relationships. The design documents of the time, including the [[Advanced Relationship Type Development|original set of relationship types]], make for interesting reading: [[Simple Advanced Relationships Interface]] describes the initial development of the UI and model for editing relationships, while [[Fancy Advanced Relationships Interface]] describes some then-future ideas for development of that relationships UI and model.

In November of 2004, [[User:RobertKaye|Robert Kaye]] took over working on the user interface and [[User:DonRedman|Don Redman]] became the [[Proposals#Definitions|Idea Champion]] for advanced relationships. The design documents of the time, including the [[Advanced Relationship Type Development|original set of relationship types]], make for interesting reading: [[Simple Advanced Relationships Interface]] describes the initial development of the UI and model for editing relationships, while [[Fancy Advanced Relationships Interface]] describes some then-future ideas for development of that relationships UI and model.


On April 10, 2005, development was completed, and advanced relationship support was officially added to the database.
On April 10, 2005, development was completed, and advanced relationship support was officially added to the database.


[[User:RobertKaye|Robert Kaye]] and [[User:DonRedman|Don Redman]] defined the original set of [[:Category:Relationship Type|relationship types]]. All additions, removals, and changes to the list of [[:Category:Relationship Type|relationship types]] since then have been made by the [[Proposals|Style Council]].
Robert Kaye and Don Redman defined the original set of [[:Category:Relationship Type|relationship types]]. All additions, removals, and changes to that list of relationship types since then have been made by the [[Proposals#Definitions|Style Council]].





Revision as of 12:52, 9 April 2010

An advanced relationship is a way to represent all the various inter-relationships between entities, as well as relationships from entities to information and resources found outside of 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 relationship type. These types define:

  • Which entities will be related (artists, albums, tracks, etc)
  • What attributes go along with the relationship
  • The link phrases of the relationships, which describe relationship information in an English sentence.

For example, 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".

Creating and editing relationships

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 and attributes is limited to selected users, called Relationship Editors. They implement new relationships and changes to existing relationships following the passage of a proposal to do so.

While there are very few relationship editors, anyone can propose new relationships or changes to existing relationships, using said proposal process. Though most editors are not able to directly edit the types of advanced relationships, it can be useful to know what Advanced Relationship Attribute Syntax itself supports, as it will be used to implement any relationship proposal which passes the process.

Style

Please see Advanced Relationship Style.

History

Advanced relationships were first officially proposed here. Dave Evans created the database structure to allow relationships, and wrote tools for allowing the user to define a type of relationship. However, the code for linking two entities together and the UI to manipulate relationships themselves was left undone.

In November of 2004, Robert Kaye took over working on the user interface and Don Redman became the Idea Champion for advanced relationships. The design documents of the time, including the original set of relationship types, make for interesting reading: Simple Advanced Relationships Interface describes the initial development of the UI and model for editing relationships, while Fancy Advanced Relationships Interface describes some then-future ideas for development of that relationships UI and model.

On April 10, 2005, development was completed, and advanced relationship support was officially added to the database.

Robert Kaye and Don Redman defined the original set of relationship types. All additions, removals, and changes to that list of relationship types since then have been made by the Style Council.