Over the last weeks, I co-developed the Ordered List Ontology. This is an ontology for describing ordered lists, which are also know as sequences. This concept is the result of a discussion about how to model playlists (especially of music tracks) and was proposed by Samer A. Abdallah.
It consists of two concepts – olo:OrderedList and olo:Slot. That means an ordered list is a composite of all slots, which are part of this ordered list (related by the property olo:slot). Although, the Ordered List Ontology is OWL based, the ontology also provides “backward” compatibility to the RDFS world.
The initial and primary access method to single slots in an ordered list should be olo:index, because this property represents the fixed index of a slot in an ordered list. Thereby, the property olo:length relates to the length of an ordered list, the number of included slots. The secondary access method is its (currently) optional iterator olo:next as shortcut to the next slot in the list. The items, which are arranged in an ordered list, are associated by the property olo:item to a slot.
Since, the Ordered List Ontology won’t restrict its users in how they have to apply the ontology, all properties also have an inverse property. These are explicitly defined for inverse properties, which introduce also a new meaning (olo:ordered_list, olo:previous), and anonymous defined for the rest of the inverse properties.
An use case of the Ordered List Ontology is for example a music playlist (see also RDF and N3 for downloadable representations of this example). This example is illustrated in the graphic above and in the RDF/Turtle representation below.
The whole music playlist is an olo:OrderedList* instance and could be annotated with further editoral metadata, e.g. a title, a description and a creator. Each track (mo:Track) of the music playlist is embedded into an olo:Slot instance. The music playlist has a fixed length (olo:length) and each slot has a fixed index (olo:index) in the ordered list it belongs to.
@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 mo: <http://purl.org/ontology/mo/> .
@prefix ex: <http://example.org/> .
ex:FunkyPlaylist a olo:OrderedList ;
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 ;
a olo:Slot ;
olo:index 1 ;
a olo:Slot ;
olo:index 2 ;
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 .
Please feel free to reuse the Ordered List Ontology also for your own projects (let me know your use cases 😉 ). Comments, suggestions and critics are also very welcome.
PS: Thanks to all people, which helped the Ordered List Ontology to what it is now (Samer A. Abdallah, Kurt Jacobson, Yves Raimond, Mats Skillingstad, Aldo Gangemi, …)