The core Music Ontology has the following scope:
Creating web identifiers for commonly used concepts in the music domain...
In this performance a particular arrangement of the Trout Quintet by Franz Schubert was interpreted.
"Come as You Are" by the band Nirvana was released on a single and the "Nevermind" album.
Ten recordings of this particular session have been made, each with a particular microphone location.
On this particular signal, here are the locations of the different beats.
In this performance a particular arrangement of the Trout Quintet by Franz Schubert was interpreted.
"Come as You Are" by the band Nirvana was released on a single and the "Nevermind" album.
Ten recordings of this particular session have been made, each with a particular microphone location.
On this particular signal, here are the locations of the different beats.
The Music Ontology is based on other ontologies:
The Timeline ontology, for expressing temporal information on multiple timelines:


The Friend of a Friend vocabulary 
Describing events on multiple timelines, linking together musical objects
...and well, that's about all we need!
The Music Ontology subsumes all these ontologies to deal with music-related information
A typical Musical Ontology workflow
:work
a mo:MusicalWork ;
dc:title "Franz Schubert's Trout Quintet" .
:work
a mo:MusicalWork ;
dc:title "Franz Schubert's Trout Quintet" .
:performance
a mo:Performance ;
dc:title "Trout Quintet, performed by the London Symphony Orchestra" ;
mo:performance_of :work ;
mo:performer <http://dbpedia.org/resource/London_Symphony_Orchestra> ;
mo:recorded_as [
a mo:Signal ;
mo:published_as :track1 ;
dc:title "Recording of the LSO performing the Trout Quintet" ;
] .
:track1
a mo:Track ;
mo:track_number 5 ;
owl:sameAs <http://dbtune.org/musicbrainz/resource/
track/3208fbce-c20f-4362-a3d5-5405ac1904bd> ;
dc:title "Trout Quintet, performed by the LSO, on 'Favorite Classics'"
.
Describing Glenn Gould's last public performance
Let's first write that there was a performance, and that it involved Glenn Gould
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix : <#> .
:performance
a mo:Performance ;
mo:performer <http://dbpedia.org/resource/Glenn_Gould> .
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix : <#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:performance
a mo:Performance ;
mo:performer <http://dbpedia.org/resource/Glenn_Gould> ;
dc:date "1964-04-10"^^xsd:date .
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix : <#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix event: <http://purl.org/NET/c4dm/event.owl#> .
:performance
a mo:Performance ;
mo:performer <http://dbpedia.org/resource/Glenn_Gould> ;
dc:date "1964-04-10"^^xsd:date ;
event:place <http://dbpedia.org/resource/Ebell_of_Los_Angeles> .
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix : <#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix event: <http://purl.org/NET/c4dm/event.owl#> .
:performance
a mo:Performance ;
mo:performer <http://dbpedia.org/resource/Glenn_Gould> ;
dc:date "1964-04-10"^^xsd:date ;
event:place <http://dbpedia.org/resource/Ebell_of_Los_Angeles> ;
mo:performance_of <http://dbpedia.org/resource/
Piano_Sonata_No._30_(Beethoven)> .
Save as glenn_gould_performance.n3
Go to http://www.rdfabout.com/demo/validator/ and check your RDF (make sure to select "Turtle" in the input format drop-down list)
Or, if you have raptor-utils installed, just run the following from the command-line:
$ rapper -i turtle glenn_gould_performance.n3
It should give 5 RDF triples
Give me places in which Glenn Gould played
PREFIX mo: <http://purl.org/ontology/mo/>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
SELECT ?place
FROM <glenn_gould_performance.n3>
WHERE {
?performance
mo:performer <http://dbpedia.org/resource/Glenn_Gould> ;
event:place ?place
}
Save as places_in_which_glenn_gould_played.rq
Use roqet from the rasqal-utils package:
$ roqet places_in_which_glenn_gould_played.rq
roqet: Querying from file places_in_which_glenn_gould_played.rq
roqet: Query has a variable bindings result
result: [place=uri<http://dbpedia.org/resource/Ebell_of_Los_Angeles>]
roqet: Query returned 1 results
Or use sparql.org (the file is at http://moustaki.org/resources/glenn_gould_performance.n3) - results
In the same way, we can describe more complex things:
:signal owl:sameAs <http://dbtune.org/musicbrainz/resource/
signal/eb20ee61-414f-4eee-8dce-190db516a466>.
:signal mo:time [
tl:duration "PT2M14S"^^xsd:duration;
tl:timeline :tl;
].
:chorus1 a ps:Chorus;
rdfs:label "First chorus";
event:time [
tl:timeline :tl;
tl:start "PT0S"^^xsd:duration;
tl:duration "PT9S"^^xsd:duration;
].
:verse1 a ps:Verse;
rdfs:label "First verse";
event:time [
tl:timeline :tl;
tl:start "PT9S"^^xsd:duration;
tl:duration "PT33S"^^xsd:duration;
].
:rec a mo:Recording;
rdfs:label "live recording of my band in studio";
event:sub_event :guitar1, :guitar2, :drums1, :kick1, :sing.
:sing a mo:Recording;
rdfs:label "Voice recorded with a SM58";
event:factor rd:sm57;
event:place [rdfs:label "Middle of the room"].
:kick1 a mo:Recording;
rdfs:label "Kick drum using a Shure PG52";
event:factor rd:pg52;
event:place [rdfs:label "Kick drum microphone location"].
:compo
a mo:Composition;
event:product :syrinx_w ;
event:product :syrinx_s .
:syrinx
a mo:MusicalWork;
owl:sameAs <http://dbpedia.org/resource/Syrinx_%28Debussy%29> .
:syrinx_s
a mo:Score ;
so:score_time :tl .
:tl a so:ScoreTimeLine.
:e000
a so:DottedEighthNote ;
so:pitch :b_flat ;
event:time [
tl:onTimeLine :tl ;
tl:meets :e001 ;
] .
:e001
a so:ThirtysecondNote ;
so:pitch :a ;
event:time [
tl:onTimeLine :tl ;
tl:meets :e002 ;
] .
Multiple extensions, to deal with:
Multiple sources of Music Ontology data, including:
A special mention for MusicBrainz, a community music database holding:
Linked Data version and SPARQL end-point at dbtune.org/musicbrainz
The MusicBrainz's Next Generation Schema adds:
Now really close to MO!

<http://dbtune.org/jamendo/artist/5>
a
<http://purl.org/ontology/mo/MusicArtist> .
<http://dbtune.org/jamendo/artist/5>
<http://xmlns.com/foaf/0.1/based_near>
<http://sws.geonames.org/2991627/> .
<http://sws.geonames.org/2991627/>
a
<http://www.geonames.org/ontology#Feature>
Compare that to other metadata formats...
Most of them are geared towards a specific application, preventing extensibility
The metadata format limits the context in which it can be used
Using RDF, you can pick concepts from different places and adapt to any context
The Linking Open Data (LOD) project




(No, not the moustache)
:performance
a mo:Performance ;
mo:performer <http://dbpedia.org/resource/Glenn_Gould> ;
dc:date "1964-04-10"^^xsd:date ;
event:place <http://dbpedia.org/resource/Ebell_of_Los_Angeles> ;
mo:performance_of <http://dbpedia.org/resource/
Piano_Sonata_No._30_(Beethoven)> .
Three links to URIs within the Linked Data cloud
:performance
event:place <http://dbpedia.org/resource/Ebell_of_Los_Angeles> .
Load the place in which Glenn Gould has played
Query for more information about that place...
We can use rdflib to parse local and remote RDF - get this data linked
install rdflib using Python EZ setuptools http://pypi.python.org/pypi/setuptools
$ sudo easy_install rdflib -U "rdflib>=2.4"
Get the code in examples/scripts/glenn_gould_performance
$ python load_n_query.py
Importing local RDF file: glenn_gould_performance.n3
Loading:
http://dbpedia.org/resource/Ebell_of_Los_Angeles
Glenn Gould has played in:
http://dbpedia.org/resource/Ebell_of_Los_Angeles
The Ebell of Los Angeles is a women's club housed in a complex in the
Mid-City section of Los Angeles that includes a clubhouse building and
the renowned 1,270-seat Wilshire Ebell Theatre. The complex has been
owned and operated since 1927 by the Ebell of Los Angeles women's
club, which was formed in Los Angeles in 1894.
It is at latitude 34.06166839599609 and longitude -118.3241653442383