The Recommendation Ontology 0.3

Namespace Document 02 August 2010

This version:
http://purl.org/ontology/rec/20100802/recommendationontology.html (OWL, N3)
Latest version:
http://purl.org/ontology/rec/core# (OWL, N3)
Authors:
Bob Ferris (SMI),
Kurt Jacobson (Centre for Digital Music Queen Mary University of London)
Sourceforge Recommendation Ontology repository
Source code, examples, graphics, ...
Sourceforge SMI ontologies mailing list
Browse Archives
Wordpress Recommendation Ontology at SMI
Announcements, descriptions, use cases, ...
  SMI Webspace Index
Ontologies, vocabularies, tools, applications, ...

Valid XHTML + RDFa Creative Commons License This work is licensed under a Creative Commons Attribution License. This copyright applies to the Recommendation Ontology Specification and accompanying documentation in RDF. Regarding underlying technology, the Recommendation Ontology uses W3C's RDF technology, an open Web standard that can be freely used by anyone.


Abstract

The Recommendation Ontology specification provides basic concepts and properties for describing recommendations on/ for the Semantic Web. This document contains a RDFa description of the Recommendation Ontology and some additional information and examples.

Status of This Document

The Recommendation Ontology hooks up parts of the Similarity Ontology, the DCMI Metadata Terms, the Association Ontology and the Ordered List Ontology. The template of this specification is derived from the FOAF Vocabulary Specification, which was created by Dan Brickley and Libby Miller, and the Music Ontology Specification, which was created by Yves Raimond. It was modified and extended by Bob Ferris. Furthermore, a modified and extended version of Danbri's SpecGen version was used to generate most of the RDFa statements of the Recommendation Ontology for this specification (see here for SpecGen version 6 by Bob Ferris).

This document is created by combining the RDFS/OWL machine-readable Recommendation Ontology with a human-readable HTML representation that includes RDFa annotations. Future versions may incorporate multilingual translations of term definitions. The RDF/XML version of the specification is also available directly from the namespace URI. RDF/N3 representations could be access via the links above.

The authors welcome comments on this document, preferably via the author's email addresses.

Table of Contents

The Recommendation Ontology at a glance

The rec:Recommendation concept (see also here, for an extended view, and here, for an extended graph with relations, of this concept):

The recommendation concept

The rec:RankedRecommendation concept, as graph with relations (see also here, for an extended graph view, of this concept):

The ranked recommendation concept as graph with relations

An a-z index of Recommendation Ontology terms, by class (categories or types) and by property.

Classes: | RankedRecommendation | Recommendation |

Properties: | for | ranked_recommendation_object | recommendation | recommendation_audience | recommendation_object | recommended_in | recommender | recommends |

Examples

Extended Music Recommendation Example

RDF/Turtle representation of an extended music track recommendation example from Last.fm modeled with the Recommendation Ontology (see also RDF and N3 for downloadable representations of this example):

@prefix rec:     <http://purl.org/ontology/rec/core#> .
@prefix ex:      <http://example.org/> .
@prefix olo:     <http://purl.org/ontology/olo/core#> .
@prefix isi:     <http://purl.org/ontology/is/inst/> .
@prefix ao:      <http://purl.org/ontology/ao/core#> .
@prefix sim:     <http://purl.org/ontology/similarity/> .
@prefix is:      <http://purl.org/ontology/is/core#> .
 
<http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> 
   rec:recommendation ex:AMusicRecommendation .
 
ex:AMusicRecommendation a rec:RankedRecommendation ;
   rec:recommender isi:lastfm ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/097c362d-72b7-4a53-96e2-d9ff02f8be1f> ;
      olo:index 1
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/161d35d9-3e31-41e9-8392-cf5d2c03b31d> ;
      olo:index 2
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/093c1742-ebda-45cd-a50c-734e5d92e7f2> ;
      olo:index 3
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/0a208327-525a-429b-8e79-51669bfb81f7> ;
      olo:index 4
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/0161855d-0b98-4f2d-b2ab-446dbd8d6759> ;
      olo:index 5
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/014f2510-e653-43e9-862a-880ac6388bb1> ;
      olo:index 6
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/0ab210b0-18c6-4c52-aee7-78f6012b9192> ;
      olo:index 7
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/027326ef-1455-48c9-8543-ac908eb71925> ;
      olo:index 8
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/04dc3d0b-dff4-41a0-8bf3-12b4b34460a6> ;
      olo:index 9
      ] ;
   rec:ranked_recommendation_object [
      a olo:Slot ;
      olo:item <http://dbtune.org/musicbrainz/resource/track/0348eea1-8178-4dc1-8a37-d09b5897ace2> ;
      olo:index 10
      ] ;
   ao:included_association ex:SimAssociation01 ;
   ao:included_association ex:SimAssociation02 ;
   ao:included_association ex:SimAssociation03 ;
   ao:included_association ex:SimAssociation04 ;
   ao:included_association ex:SimAssociation05 ;
   ao:included_association ex:SimAssociation06 ;
   ao:included_association ex:SimAssociation07 ;
   ao:included_association ex:SimAssociation08 ;
   ao:included_association ex:SimAssociation09 ;
   ao:included_association ex:SimAssociation10 .
 
ex:lfmTrackSimilarity a sim:AssociationMethod ;
   is:info_service isi:lastfm .	
 
ex:Association01 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/097c362d-72b7-4a53-96e2-d9ff02f8be1f> ;
   sim:weight 1.0 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association02 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/161d35d9-3e31-41e9-8392-cf5d2c03b31d> ;
   sim:weight 0.968842 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association03 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/093c1742-ebda-45cd-a50c-734e5d92e7f2> ;
   sim:weight 0.547951 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association04 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/0a208327-525a-429b-8e79-51669bfb81f7> ;
   sim:weight 0.449539 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association05 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/0161855d-0b98-4f2d-b2ab-446dbd8d6759> ;
   sim:weight 0.401746 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association06 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/014f2510-e653-43e9-862a-880ac6388bb1> ;
   sim:weight 0.36673 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association07 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/0ab210b0-18c6-4c52-aee7-78f6012b9192> ;
   sim:weight 0.36142 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association08 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/027326ef-1455-48c9-8543-ac908eb71925> ;
   sim:weight 0.351277 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association09 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/04dc3d0b-dff4-41a0-8bf3-12b4b34460a6> ;
   sim:weight 0.350151 ;
   sim:method ex:lfmTrackSimilarity .
 
ex:Association10 a sim:Similarity ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   sim:object <http://dbtune.org/musicbrainz/resource/track/0348eea1-8178-4dc1-8a37-d09b5897ace2> ;
   sim:weight 0.336997 ;
   sim:method ex:lfmTrackSimilarity .

This example shows an extended music artist recommendation modeled as rec:RankedRecommendation instance. It is based on the music track recommendations of James Brown's "Get Up (I Feel Like Being a) Sex Machine" from Last.fm. Hence, the subject of the rec:recommendation relation is a resolvable URI to a description of James Brown's "Get Up (I Feel Like Being a) Sex Machine" at MusicBrainz, modeled and represented as Semantic Graph and provided by DBTune.
Since a rec:RankedRecommendation is a sub class of rec:Recommendation and olo:OrderedList, it can also make use of ordered list features. That means, this enables the opportunity to also provide an ordered (/ranked) list of recommendation objects (related by rec:ranked_recommendation_object), by hiding the details of their ranking features on this level. These details are provided by further association statements (here sim:Similarity) related by using the ao:included_association property.
Each slot item (related by olo:item) is also a music track description at MusicBrainz, modeled and represented as Semantic Graph and provided by DBTune. Furthermore, each similarity statement (sim:Similarity) includes

This association method ( sim:AssociationMethod) can not be further specified here, because it is based on a proprietary algorithm from Last.fm. Therefore, the complete recommendation (related by rec:recommender) and also the association method itself (related by is:info_service) is associated to the Information Service Last.fm.

Simple Music Recommendation Example

RDF/Turtle representation of a simple music track recommendation example from Last.fm modeled with the Recommendation Ontology (see also RDF and N3 for downloadable representations of this example):

@prefix rec:     <http://purl.org/ontology/rec/core#> .
@prefix ex:      <http://example.org/> .
@prefix isi:     <http://purl.org/ontology/is/inst/> .
@prefix sim:     <http://purl.org/ontology/similarity/> .
@prefix is:      <http://purl.org/ontology/is/core#> .
@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
 
ex:AMusicRecommendation a rec:Recommendation ;
   rec:for <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   rec:recommender isi:lastfm ;
   rec:recommendation_audience ex:FunkyPeople ;
   sim:subject <http://dbtune.org/musicbrainz/resource/track/008e72df-6469-4557-8b5b-c54c3285fbd3> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/097c362d-72b7-4a53-96e2-d9ff02f8be1f> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/161d35d9-3e31-41e9-8392-cf5d2c03b31d> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/093c1742-ebda-45cd-a50c-734e5d92e7f2> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/0a208327-525a-429b-8e79-51669bfb81f7> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/0161855d-0b98-4f2d-b2ab-446dbd8d6759> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/014f2510-e653-43e9-862a-880ac6388bb1> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/0ab210b0-18c6-4c52-aee7-78f6012b9192> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/027326ef-1455-48c9-8543-ac908eb71925> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/04dc3d0b-dff4-41a0-8bf3-12b4b34460a6> ;
   rec:recommendation_object <http://dbtune.org/musicbrainz/resource/track/0348eea1-8178-4dc1-8a37-d09b5897ace2> ;
   sim:method ex:lfmTrackSimilarity .
 
ex:lfmTrackSimilarity a sim:AssociationMethod ;
   is:info_service isi:lastfm .
 
ex:FunkyPeople a foaf:Group .

This example is a simplified one from the extended music track recommendation example above. It is simply stripped down to its high level recommendation. The target, where the recommendation is for, is now related by the inverse property of rec:recommendation, rec:for. Furthermore, it includes a fictional audience group (ex:FunkyPeople), which is related by the property rec:recommendation_audience. Finally, the recommendation objects are now simply related by the property rec:recommendation_object. Of course, this doesn't include the ranking, it is now an unordered list. However, it still includes the relation to its similarity method (ex:lfmTrackSimilarity).

Introduction: Recommendation Ontology Basics

What's the Recommendation Ontology for?

The Recommendation Ontology is an ontology for modeling high level recommendations on/ for the Semantic Web. Thereby, the ontology hook up parts of the Similarity Ontology, DCMI Metadata Terms, the Association Ontology and the Ordered List Ontology.
The core of the Recommendation Ontology is the rec:Recommendation concept. A rec:Recommendation instance can consist of

Since rec:Recommendation is a sub class of ao:LikeableAssociation, it is also possible to like (ao:likeminded), rate (rev:rating) or give a feedback (rev:Feedback) to a recommendation. Furthermore, one can also relate detailed association (sim:Association) or similarity statements (sim:Similarity) to a recommendation by using the property ao:included_association.
As an extension of rec:Recommendation, we built the rec:RankedRecommendation concept to enable also ordered (ranked) recommendations at a high level. rec:RankedRecommendation is not only a sub class of rec:Recommendation. Furthermore, it is also a sub class of olo:OrderedList, which enables all features of an ordered list also to this concept. Following this design, a rec:ranked_recommendation is not only a sub property of rec:recommendation_object, but also a sub property of olo:slot. That means the recommendation objects are now related by using the property olo:item.

Background

TODO

The Recommendation Ontology and Standards

TODO

TODO

The Recommendation Ontology Description

This specification serves as the Recommendation Ontology "namespace document". As such it describes the Recommendation Ontology and the terms (RDF classes and properties) that constitute it, so that Semantic Web applications can use those terms in a variety of RDF-compatible document formats and applications.

This document presents the Recommendation Ontology as a Semantic Web vocabulary or Ontology. The Recommendation Ontology is pretty simple, pragmatic and designed to allow simultaneous deployment and extension. The Recommendation Ontology is intended for widescale use, but its authors make no commitments regarding its suitability for any particular purpose.

Evolution and Extension of the Recommendation Ontology

The Recommendation Ontology is identified by the namespace URI 'http://purl.org/ontology/rec/core#'. Revisions and extensions of the Recommendation Ontology are conducted through edits to this document, which by convention is accessible in the Web via the namespace URI. For practical and deployment reasons, note that we do not update the namespace URI as the vocabulary matures.

The evolution of the Recommendation Ontology is best considered in terms of the stability of individual vocabulary terms, rather than the specification as a whole. As terms stabilise in usage and documentation, they progress through the categories 'unstable', 'testing' and 'stable'. Older terms are marked 'archaic' which allows the possibility of older forms to become modern again.

The Recommendation Ontology cross-reference: Listing the Recommendation Ontology Classes and Properties

The Recommendation Ontology introduces the following classes and properties. There is a link at the top of this document to the RDF/XML and RDF/N3 versions.

Classes: | RankedRecommendation | Recommendation |

Properties: | for | ranked_recommendation_object | recommendation | recommendation_audience | recommendation_object | recommended_in | recommender | recommends |

Classes and Properties (full detail)


Classes

Class: rec:RankedRecommendation

Ranked Recommendation - A ranked recommendation that includes an ordered list of recommendations.
Status: testing
Properties include: ranked_recommendation_object
Sub class of Recommendation olo:OrderedList
OWL Class
RDFS Class

[#] [back to top]


Class: rec:Recommendation

Recommendation - A recommendation of something for someone or a specific audience by a recommender.
Status: unstable
Properties include: recommendation_object recommendation_audience for recommender
Used with: recommendation recommended_in recommends
Sub class of ao:LikeableAssociation
Has sub class Ranked Recommendation
OWL Class
RDFS Class

[#] [back to top]


Properties

Property: rec:ranked_recommendation_object

ranked recommendation object - A ranked recommendation object in a ranked recommendation
Status: testing
Domain: Ranked Recommendation
Sub property of has recommendation object olo:slot
RDF Property
Object Property

[#] [back to top]


Property: rec:for

for - Relates a recommendation to someone or something.
Status: unstable
Domain: Recommendation
Range: owl:Thing
Inverse property of has recommendation
RDF Property
Object Property

[#] [back to top]


Property: rec:recommendation

has recommendation - A recommendation for someone or something.
Status: unstable
Domain: owl:Thing
Range: Recommendation
Sub property of sim:association
Has inverse property for
RDF Property
Object Property

[#] [back to top]


Property: rec:recommendation_audience

has recommendation audience - An audience for a specific recommendation.
Status: unstable
Domain: Recommendation
Range: dcterms:AgentClass or foaf:Group
RDF Property

[#] [back to top]


Property: rec:recommendation_object

has recommendation object - A recommendation object that is part of a specific recommendation.
Status: unstable
Domain: Recommendation
Range: owl:Thing
Sub property of sim:object
Has sub property ranked recommendation object
Has inverse property recommended in
RDF Property
Object Property

[#] [back to top]


Property: rec:recommender

has recommender - An agent, which provided/calculated this recommendation.
Status: unstable
Domain: Recommendation
Sub property of dcterms:creator
Has inverse property recommends
RDF Property
Object Property

[#] [back to top]


Property: rec:recommends

recommends - An agent recommends a recommendation to someone or a recommendation audience.
Status: unstable
Domain: dcterms:Agent
Range: Recommendation
Inverse property of has recommender
RDF Property
Object Property

[#] [back to top]


External Vocabulary References

The description of the terms in the Recommendation Ontology 'dictionary' make reference to classes and properties elsewhere. This section of the Recommendation Ontology specification provides a placeholder reference for any Recommendation Ontology mention of externally defined terms. For example, sometimes we might say that Counter Ontology property has a domain or range of an externally defined class, or that a Recommendation Ontology class is a sub-class of an external class, or 'disjoint with' such a class (ie. has no common members). Such claims help fix the intended meaning of Recommendation Ontology terms in relationship to other 'peer' vocabularies.
Currently, the Recommendation Ontology sub classes:

ao:LikeableAssociation
A likeable association. That means this association type is intended to be used for voting (ao:likeminded), feedbacking (rev:Feedback), reviewing (e.g. rev:rating) an association statement (related by ao:included_association) in the context of something.
olo:OrderedList
An ordered list with a given length an indexed items.

Status Vocabulary

Each term in the Recommendation Ontology is annotated with properties from the SemWeb Vocab Status Ontology

Note that this mechanism is itself somewhat experimental and evolvin. The definitions of 'stable', 'unstable', 'archaic' and 'testing' cannot be defined as global absolutes, but only in relationship to the practices, expectations and social structures around some vocabulary. For their use in the Recommendation Ontology, future versions of this specification could usefully offer more detail about what to expect from a term labelled 'stable'.

vs:term_status
The vs:term_status property indicates the status of a vocabulary term, one of 'stable','unstable','testing' or 'archaic'.

Acknowledgments

I would like to thank very much Kurt Jacobson to help to establish this multiple purpose Recommendation Ontology. Furthermore, Dan Brickley and Libby Miller to provide the basis for this specification.

Recent Changes

=========================
Version 0.3 (July 2010)
=========================
 * ADDED: rec:for - relates a recommendation to someone or something; is inverse property of rec:recommendation
 * MODIFIED: rec:recommender - sub property of dcterms:creator
 * MODIFIED: rec:recommended_object - sub property of sim:object

=========================
Version 0.2 (July 2010)
=========================
 * ADDED: rec:RankedRecommendation - a ranked recommendation that includes an ordered list of recommendations
 * ADDED: rec:ranked_recommendation_object - a ranked recommendation object in a ranked recommendation

=========================
Version 0.1 (July 2010)
=========================
 * ADDED: rec:Recommendation - a recommendation of something for someone or a specific audience by a recommender
 * ADDED: rec:recommendation - a recommendation for someone or something
 * ADDED: rec:recommendation_object - a recommendation object that is part of a specific recommendation
 * ADDED: rec:recommender - an agent, which provided/calculated this recommendation
 * ADDED: rec:recommended_in - a thing, which is recommended in a recommendation (inverse of rec:recommendation_object)
 * ADDED: rec:recommends - an agent recommends a recommendation to someone or a recommendation audience