* 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, [[Performer Relationship Type]] can be used to link an artist to a track on which they performed. Performer Relationship Type then allows an optional [[Instrument Relationship Attribute]] to specify the instrument that the artist played. Due to the link phrase, the site can construct an English sentence from this data, so when the data is displayed, you see "[[track:64d0220a-0587-43c9-b7e3-809e8c06542b|Runaway Train]] has/had guitar performed by [[artist:618b6900-0618-4f1e-b835-bccb17f84294|Eric Clapton]]".

+

For example, the Performer relationship type can be used to link an artist to a track on which they performed. It allows an optional Instrument relationship attribute to specify the instrument that the artist played. Due to the link phrase, the site can construct an English sentence from this data, so when the data is displayed, you see "[[track:64d0220a-0587-43c9-b7e3-809e8c06542b|Runaway Train]] has/had guitar performed by [[artist:618b6900-0618-4f1e-b835-bccb17f84294|Eric Clapton]]".

==Getting Started==

==Getting Started==

Revision as of 02:25, 19 January 2014

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.

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.

Advanced Relationship Types

The link phrases of the relationships, which describe relationship information in an English sentence.

For example, the Performer relationship type can be used to link an artist to a track on which they performed. It allows an optional Instrument relationship attribute to specify the instrument that the artist played. Due to the link phrase, the site can construct an English sentence from this data, so when the data is displayed, you see "Runaway Train has/had guitar performed by Eric Clapton".

Getting Started

Style

Modifying relationships

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 make such a proposal for new relationships or changes to existing relationships. Though most editors are not able to directly edit the types and attributes of advanced relationships, it can be useful to know what Advanced Relationship Attribute Syntax itself supports, as it will be used to implement any passed relationship proposal.

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.

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.

Terminology

There are three different names for this same feature: "Advanced Relationship", "Relationship" and "link", as well as the acronym "AR" and the prefix "l_". "link" and "l_" are mostly used in the database schema; the web site display uses "Relationship" pretty much exclusively, and the wiki uses all the versions indiscriminately.