Hello everybody,
today I like to present the Play Back Ontology, whose use cases are trying to combine and extend the previous announced ontologies (Ordered List Ontology, Counter Ontology and Association Ontology) and of course further ontologies (e.g. Music Ontology, Similarity Ontology, DCMI Metadata Terms, e.g. the Bibliographic Ontology or the Functional Requirements for Bibliographic Records Vocabulary), which are needed to model them and for ontology alignment. Therefore, the Play Back Ontology provides basic concepts and properties for modelling knowledge representations that are related to the play back domain, e.g. a playlist, play back and skip counter, on/ for the Semantic Web.
The play back domain is a subset of the media domain. It deals with playing back some media, e.g. videos, music tracks or slideshows, and how used media can be structured or organized.
On the basis of this definition the objects that are included into this domain are media objects. That means all concepts of the Play Back Ontology are somehow related to at least one media object. The range of these media objects is currently restricted to the concepts bibo:Document and frbr:Endeavour, incl. all their sub classes, e.g. mo:Track.
The graphics above illustrate the pbo:Playlist concept, which is a sub class of bibo:Document and olo:OrderedList. Hence, a specialized ordered list of the media domain. Therefore, a pbo:Playlist instance consists of pbo:PlaylistSlot instances (related by pbo:playlist_slot), which are related to at least one media object by using the property pbo:playlist_item. pbo:Playlist has a further sub class, pbo:FixedPlaylist, to described playlists or sections of playlists, which have a strict order, e.g. a section of music tracks that should be played always one after another, or that are somehow related to each other. Furthermore, pbo:Playlist instances can be related to something by using the property pbo:playlist. To complete the description of the playlist concept of the Play Back Ontology in its current state, it is also necessary to mention the semantic relation pbo:transition, which can be used to associate a description of a transition between two neighbouring playlist slots, e.g. two successice music tracks in a dj mix.
The Play Back Ontology consists further more of a couple of media action counters, which are represented by pbo:MediaActionCounter. In the graphic above you can see this concept and its sub classes pbo:PlayBackCounter and pbo:SkipCounter. Due to the property pbo:media_object, which is a sub property of co:object, it is possible to only associate media objects to pbo:MediaActionCounter instances. The same behaviour is realized for media object relations to co:ScrobbleEvent instances by using the property pbo:media_scrobble_object. Finally, one can represent the skip time of a media object for a skip event by utilizing the refined scrobble event pbo:SkipEvent, which is in the domain of the property pbo:skip_time.
Below are examples of use cases of the Play Back Ontology. The first one describes a music playlist and the second one the usage of play back and skip counter.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix olo: <http://purl.org/ontology/olo/core#> .
@prefix pbo: <http://purl.org/ontology/pbo/core#> .
@prefix ao: <http://purl.org/ontology/ao/core#> .
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix ex: <http://example.org/> .
@prefix sim: <http://purl.org/ontology/similarity/> .
ex:FunkyPlaylist a pbo:Playlist ;
dc:title "Funky Playlist"^^xsd:string ;
dc:description "A playlist full of funky legends"^^xsd:string ;
dc:creator <http://foaf.me/zazi#me> ;
olo:length 2 ;
sim:association ex:ZazisAssociation ;
sim:association ex:BobsAssociationInUse ;
pbo:playlist_slot [
a pbo:PlaylistSlot ;
olo:index 1 ;
pbo:playlist_item ex:SexMachine
] ;
pbo:playlist_slot [
a pbo:PlaylistSlot ;
olo:index 2 ;
pbo:playlist_item ex:GoodFoot
] .
ex:SexMachine a mo:Track ;
dc:title "Sex Machine"^^xsd:string ;
dc:creator <http://dbpedia.org/resource/James_Brown> .
ex:GoodFoot a mo:Track ;
dc:title "Good Foot"^^xsd:string .
ex:ZazisAssociation a sim:Association ;
dc:creator <http://foaf.me/zazi#me> ;
ao:genre "Funk"^^xsd:string ;
ao:mood "party"^^xsd:string ;
ao:occasion "my birthday party 2008"^^xsd:string .
ex:BobsAssociation a sim:Association ;
dc:creator <http://foaf.me/zazi#me> ;
ao:genre ex:Funk ;
ao:mood "happy"^^xsd:string ;
ao:occasion "good feeling music"^^xsd:string .
ex:BobsAssociationInUse a ao:LikeableAssociation ;
ao:included_association ex:BobsAssociation ;
ao:likeminded <http://moustaki.org/foaf.rdf#moustaki> .
ex:Funk a mo:Genre .
The graphic (see here, for another graph view, and here, for an extended graph
view, of this example) above illustrates the RDF/Turtle representation below the graphic, which is a music playlist example created with the Play Back Ontology (see also RDF and N3 for downloadable representations of this example). This music playlist is modeled as pbo:Playlist instance and is annotated with further editoral metadata, e.g. a title, a description and a creator, and has a fixed length (olo:length) that represents the number of slots this specific ordered list instance consist of. Each slot is modeled as pbo:PlaylistSlot instance to ensure that only some media objects are in the playlist. This is especially realized by the range restriction of pbo:playlist_item. In the example these items are mo:Track instances.
Furthermore, a playlist can be annotated with association statements (sim:Association based) related by sim:association. Please have a look at the previous blog post about the Association Ontology for an explanation of these statements.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix co: <http://purl.org/ontology/co/core#> .
@prefix pbo: <http://purl.org/ontology/pbo/core#> .
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix ex: <http://example.org/> .
@prefix event: <http://purl.org/NET/c4dm/event.owl#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix am: <http://vocab.deri.ie/am#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix ao: <http://purl.org/ontology/ao/core#> .
ex:PlayBackCounter a pbo:PlayBackCounter ;
dc:title "Play Back Counter"^^xsd:string ;
dc:creator <http://foaf.me/zazi#me> ;
dc:description "A play back counter of a specific music track"^^xsd:string ;
co:count 2 ;
pbo:media_object ex:SexMachine .
ex:SkipCounter a pbo:SkipCounter ;
dc:title "Skip Counter"^^xsd:string ;
dc:creator <http://foaf.me/zazi#me> ;
dc:description "A skip counter of a specific music track"^^xsd:string ;
co:count 1 ;
pbo:media_object ex:SexMachine .
ex:SexMachine a mo:Track ;
dc:title "Sex Machine"^^xsd:string ;
dc:creator <http://dbpedia.org/resource/James_Brown> .
ex:SexMachineSE1 a co:ScrobbleEvent ;
event:time [
a time:Instant ;
time:inXSDDateTime "2010-07-15T11:21:52+01:00"^^xsd:dateTime
] ;
event:agent <http://foaf.me/zazi#me> ;
ao:used_application ex:iTunes ;
ao:used_device ex:MyPC ;
co:event_counter ex:PlayBackCounter .
ex:SexMachineSE2 a co:ScrobbleEvent ;
event:time [
a time:Instant ;
time:inXSDDateTime "2010-07-15T11:27:52+01:00"^^xsd:dateTime
] ;
event:agent <http://foaf.me/zazi#me> ;
ao:used_application ex:iTunes ;
ao:used_device ex:MyPC ;
co:event_counter ex:PlayBackCounter .
ex:SexMachineSE3 a co:ScrobbleEvent ;
event:time [
a time:Instant ;
time:inXSDDateTime "2010-07-15T11:35:52+01:00"^^xsd:dateTime
] ;
event:agent <http://foaf.me/zazi#me> ;
ao:used_application ex:iTunes ;
ao:used_device ex:MyPC ;
co:event_counter ex:SkipCounter .
ex:iTunes a am:Application .
ex:MyPC a owl:Thing .
The graphic (see here, for an extended graph view) above illustrates the RDF/Turtle representation below the graphic, which describes a play back and skip counter created with the Play Back Ontology (see also RDF and N3 for downloadable representations of this example). It shows, how co:Counter can be specialized as a play back counter (pbo:PlayBackCounter) and as a skip counter (pbo:SkipCounter) for a specific music track (here of the type mo:Track), related by the property pbo:media_object.
Each time, when this specific music track was played, a co:ScrobbleEvent instance was created and linked to its play back counter by the property co:event_counter. This happened also, when this specific music track was skipped. The only difference is that such an event is related to its skip counter pbo:SkipCounter.
To describe scrobble events more in detail (besides event:time and event:agent), one can add properties such as ao:used_application (to describe the application, which is related to the scrobbling activity, e.g. ex:iTunes) or ao:used_device (to describe the device, which is related to the scrobbling activity, e.g. ex:MyPC).
The Play Back Ontology and the illustrated examples above demonstrates the reutilization, specialization and application of concepts of existing ontologies, as mention in the introduction of this blog post. I like to invite you to create further, more specialized concepts and properties, which are based on the introduced ontologies.
I would like to thank very much the whole Music Ontology Specification mailing list group to help to establish this multiple purpose play back ontology and especially Kurt Jacobson for providing everytime new input and ideas. Please feel free to reuse and extend the Play Back Ontology also for your own projects (let me know your use cases 😉 ). Comments, suggestions and critics are also very welcome.
Cheers,
Bob
Hi Bob,
Thanks for the ontology! I have noticed two little problems, maybe you could spend some time fixing them?
1. “This version” (both OWL and N3) links are dead. “Latest version” links are OK.
2. I have noticed something odd in the OWL definition of this ontology: an inverse property without any RDF ID.
…
is playlist item of
Either I am missing something or this is wrong…At least Raptor ontology parser that I am using refuses to load it.
Thanks!
Hi Nikolai,
thanks a lot for remarking the dead link. I hope that I’ll have some time in the near future to fix this PURL mapping. However, you would receive the same version of the ontology from there 😉
re. 2.) this is an anonymous property and a common ontology design pattern for modelling inverse properties to do not confuse the audience with too many properties (cf., e.g., When should I use explicit/anonymous defined inverse properties?). However, I’m wondering why Raptor cannot deal with them, because I always utilised Raptor to create the Turtle version from the RDF/XML version of the ontology (in the past).
Cheers,
Bo