Line 22: | Line 22: | ||
* '''s5''': The critic Crian Hiatt defines the album as "the most ambitious work of its twenty-three-year career". | * '''s5''': The critic Crian Hiatt defines the album as "the most ambitious work of its twenty-three-year career". | ||
}} | }} | ||
+ | |||
+ | === Simple sentences of ''album production'' story === | ||
+ | |||
+ | * '''s1''': The “Red Hot Chili Peppers” are: Anthony Kiedis (vocals), Flea (bass, trumpet, keyboards, and vocals), John Frusciante (guitar), and Chad Smith (drums). | ||
+ | * '''s2''': During 2005, the band recorded the album “Stadium Arcadium”. | ||
+ | * '''s3''': The album contains 28 tracks, and has been released in May 2006. | ||
+ | * '''s4''': It includes the track of the song “Hump de Bump”, which was composed in January 2004. | ||
+ | * '''s5''': The critic Crian Hiatt defines the album as "the most ambitious work of its twenty-three-year career". | ||
+ | |||
+ | === Instance-free sentences of ''album production'' story === | ||
+ | |||
+ | * '''instance-free s1''': | ||
+ | # Band members are persons | ||
+ | # A person has a role | ||
+ | # A person can play an instrument | ||
+ | * '''instance-free s2''': | ||
+ | # Members of a band record an album at a certain time interval | ||
+ | * '''instance-free s3''': | ||
+ | # A recorded album contains tracks and is released at a certain time interval. | ||
+ | * '''instance-free s4''': | ||
+ | # Songs are composed at a certain time and recorded as tracks at a certain time. | ||
+ | * '''instance-free s5''': | ||
+ | # A critique by a Person about an album has a text. | ||
+ | |||
+ | === Selected CPs for ''album production'' story === | ||
+ | |||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/situation.owl situation] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/agentrole.owl agent role] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/objectrole.owl object role] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/classification.owl classification] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/collectionentity.owl collection] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/informationrealization.owl information realization] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl time interval] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/albumcritiquesituation.owl album critique situation] | ||
+ | * [http://www.ontologydesignpatterns.org/cp/owl/songtrack.owl song track] | ||
+ | |||
+ | === CP annotation schema === | ||
+ | |||
+ | * [http://www.ontologydesignpatterns.org/schemas/cpannotatonschema.owl situation] | ||
+ | |||
+ | === Competency questions, unit tests === | ||
+ | |||
+ | 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. | ||
+ | |||
+ | * '''s1''' | ||
+ | ** '''cq1''': Who are the members of a band? | ||
+ | ** '''cq2''': Which band a certain person is a member of? | ||
+ | SELECT ?member ?band | ||
+ | WHERE { ?member a :Person . | ||
+ | ?band a :Band. | ||
+ | ?band :hasBandMember ?member} | ||
+ | ** '''cq3''': What roles has a certain person? | ||
+ | ** '''cq4''': Who has a certain role? | ||
+ | SELECT ?person ?role | ||
+ | WHERE { ?person a :Person . | ||
+ | ?role a :Role. | ||
+ | ?person :hasRole ?role} | ||
+ | ** '''cq5''': What instruments can play a certain person? | ||
+ | ** '''cq6''': Who can play a certain instrument? | ||
+ | SELECT ?person ?instrument | ||
+ | WHERE { ?person a :Person . | ||
+ | ?instrument a :InstrumentType. | ||
+ | ?person :canPlayInstrument ?instrument} | ||
+ | * '''s2''' | ||
+ | ** '''cq7''': When has been recorded a certain album? | ||
+ | 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} | ||
+ | ** '''cq8''': Who is involved in the recording of a certain album? | ||
+ | SELECT ?person ?album | ||
+ | WHERE {?person a :Person. | ||
+ | ?album a :RecordedAlbum. | ||
+ | ?recording_sit a :RecordingSituation. | ||
+ | ?recording_sit :forAlbum ?album. | ||
+ | ?recording_sit :involvesMusician ?person} | ||
+ | * '''s3''' | ||
+ | ** '''cq9''': When was a certain album released? | ||
+ | ** '''cq10''': What albums have been released at a certain time interval? | ||
+ | SELECT ?album ?date | ||
+ | WHERE {?album a :RecordedAlbum. | ||
+ | ?time a :TimeInterval. | ||
+ | ?album :hasReleaseTime ?time. | ||
+ | ?time :hasReleaseDate ?date} | ||
+ | ** '''cq11''': What tracks are included in a certain album? | ||
+ | ** '''cq12''': What albums a certain track is contained in? | ||
+ | SELECT ?album ?track | ||
+ | WHERE {?album a :RecordedAlbum. | ||
+ | ?track a :Track. | ||
+ | ?album :containsTrack ?track.} | ||
+ | ** '''cq13''': What tracks were produced for albums recorded at a certain time interval? | ||
+ | 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} | ||
+ | * '''s4''' | ||
+ | ** '''cq14''': What tracks are the recording of a certain song? | ||
+ | SELECT ?track ?song | ||
+ | WHERE {?track a :Track. | ||
+ | ?song a :Song. | ||
+ | ?song :songInTrack ?track} | ||
+ | ** '''cq15''': When was a song composed? | ||
+ | SELECT ?song ?date | ||
+ | WHERE {?song a :Song. | ||
+ | ?time a :TimeInterval. | ||
+ | ?time :hasCompositionDate ?date. | ||
+ | ?song :hasCompositionTime ?time} | ||
+ | ** '''cq16''': When was a track recorded? | ||
+ | SELECT ?track ?date | ||
+ | WHERE {?track a :Track. | ||
+ | ?time a :TimeInterval. | ||
+ | ?time :hasRecordingDate ?date. | ||
+ | ?recording_sit :producesTrack ?track. | ||
+ | ?recording_sit :hasRecordingTime ?time} | ||
+ | ** '''cq17''': When was a song recorded as a track? | ||
+ | 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} | ||
+ | * '''s5''' -> | ||
+ | ** '''cq17''': Who did express a critique about a certain album? | ||
+ | ** '''cq18''': What albums did review a certain critic? | ||
+ | SELECT ?critic ?album | ||
+ | WHERE {?critic a :Person. | ||
+ | ?album a :RecordedAlbum. | ||
+ | ?critique_sit :onAlbum ?album. | ||
+ | ?critique_sit :byCritic ?critic} | ||
+ | ** '''cq19''': What does a certain critic say about a certain album? | ||
+ | SELECT ?critic ?album ?text | ||
+ | WHERE {?critic a :Person. | ||
+ | ?album a :RecordedAlbum. | ||
+ | ?critique_sit :onAlbum ?album. | ||
+ | ?critique_sit :byCritic ?critic. | ||
+ | ?critique_sit :hasCritiqueText ?text} |
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 have 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 of its twenty-three-year career".
The phrase above can be simplified by transformed it in 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}