Tutorial | Training:NeOn 2008 Tutorial on Computational Ontologies |
---|---|
Title | Music Industry Ontology |
To develop an OWL ontology starting from a use case.
Context
The Warner Bros recording label has decided to manage its own productions by means of an ontology-driven application. They provide the designers with documents describing scenarios that informally describe the typical objects and data to be stored in the knowledge base. From this documents one story is extracted and assigned to ontology designers.
Story for exercise 1: album production
The “Red Hot Chili Peppers” are: Anthony Kiedis (vocals), Flea (bass, trumpet, keyboards, and vocals), John Frusciante (guitar), and Chad Smith (drums). During 2005, the band recorded the album “Stadium Arcadium”. The album contains 28 tracks and has been released in May 2006. It includes the track of the song “Hump de Bump”, which was composed in January 2004. The critic Crian Hiatt defines the album as "the most ambitious work in his twenty-three-year career".
The phrase above can be simplified by transforming it into 5 sentences:
Solutions:
The unit tests are here substantiated as SPARQL queries. Syntax has to be adjusted in order to comply to namespaces prefixes and ontology element names used in the actual ontology.
SELECT ?member ?band WHERE { ?member a :Person . ?band a :Band. ?band :hasBandMember ?member}
SELECT ?person ?role WHERE { ?person a :Person . ?role a :Role. ?person :hasRole ?role}
SELECT ?person ?instrument WHERE { ?person a :Person . ?instrument a :InstrumentType. ?person :canPlayInstrument ?instrument}
SELECT ?album ?date WHERE {?time a :TimeInterval. ?album a :RecordedAlbum. ?recording_sit a :RecordingSituation. ?recording_sit :hasRecordingTime ?time. ?time :hasRecordingDate ?date . ?recording_sit :forAlbum ?album}
SELECT ?person ?album WHERE {?person a :Person. ?album a :RecordedAlbum. ?recording_sit a :RecordingSituation. ?recording_sit :forAlbum ?album. ?recording_sit :involvesMusician ?person}
SELECT ?album ?date WHERE {?album a :RecordedAlbum. ?time a :TimeInterval. ?album :hasReleaseTime ?time. ?time :hasReleaseDate ?date}
SELECT ?album ?track WHERE {?album a :RecordedAlbum. ?track a :Track. ?album :containsTrack ?track.}
SELECT ?track ?album ?date WHERE {?track a :Track. ?album a :RecordedAlbum. ?time a :TimeInterval. ?time :hasRecordingDate ?date. ?recording_sit :hasRecordingTime ?time. ?recording_sit :forAlbum ?album. ?recording_sit :producesTrack ?track}
SELECT ?track ?song WHERE {?track a :Track. ?song a :Song. ?song :songInTrack ?track}
SELECT ?song ?date WHERE {?song a :Song. ?time a :TimeInterval. ?time :hasCompositionDate ?date. ?song :hasCompositionTime ?time}
SELECT ?track ?date WHERE {?track a :Track. ?time a :TimeInterval. ?time :hasRecordingDate ?date. ?recording_sit :producesTrack ?track. ?recording_sit :hasRecordingTime ?time}
SELECT ?song ?track ?date WHERE {?song a :Song. ?track a :Track. ?time a :TimeInterval. ?time :hasRecordingDate ?date. ?song :isRealizedBy ?track. ?recording_sit :producesTrack ?track. ?recording_sit :hasRecordingTime ?time}
SELECT ?critic ?album WHERE {?critic a :Person. ?album a :RecordedAlbum. ?critique_sit :onAlbum ?album. ?critique_sit :byCritic ?critic}
SELECT ?critic ?album ?text WHERE {?critic a :Person. ?album a :RecordedAlbum. ?critique_sit :onAlbum ?album. ?critique_sit :byCritic ?critic. ?critique_sit :hasCritiqueText ?text}