Copyright © 2010 Kurt Jacobson and Bob Ferris |
|
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.
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.
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.
The rec:Recommendation concept (see also here, for an extended view, and here, for an extended graph with relations, of this concept):
The rec:RankedRecommendation concept, as graph with relations (see also here, for an extended graph view, of this concept):
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 |
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.
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).
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.
TODO
TODO
TODO
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.
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 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 |
Status: | testing | |
---|---|---|
Properties include: | ranked_recommendation_object | |
Sub class of | Recommendation olo:OrderedList | |
OWL Class | ||
RDFS Class |
[#] [back to top]
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]
Status: | testing | |
---|---|---|
Domain: | Ranked Recommendation | |
Sub property of | has recommendation object olo:slot | |
RDF Property | ||
Object Property |
[#] [back to top]
Status: | unstable | |
---|---|---|
Domain: | Recommendation | |
Range: | owl:Thing | |
Inverse property of | has recommendation | |
RDF Property | ||
Object Property |
[#] [back to top]
Status: | unstable | |
---|---|---|
Domain: | owl:Thing | |
Range: | Recommendation | |
Sub property of | sim:association | |
Has inverse property | for | |
RDF Property | ||
Object Property |
[#] [back to top]
Status: | unstable | |
---|---|---|
Domain: | Recommendation | |
Range: | dcterms:AgentClass or foaf:Group | |
RDF Property |
[#] [back to top]
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]
Status: | unstable | |
---|---|---|
Domain: | owl:Thing | |
Range: | Recommendation | |
Inverse property of | has recommendation object | |
RDF Property | ||
Object Property |
[#] [back to top]
Status: | unstable | |
---|---|---|
Domain: | Recommendation | |
Sub property of | dcterms:creator | |
Has inverse property | recommends | |
RDF Property | ||
Object Property |
[#] [back to top]
Status: | unstable | |
---|---|---|
Domain: | dcterms:Agent | |
Range: | Recommendation | |
Inverse property of | has recommender | |
RDF Property | ||
Object Property |
[#] [back to top]
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:
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'.
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.
========================= 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