Copyright © 2008 by Fundación CTIC. This work is licensed
under CreativeCommons
Attribution-Share Alike 3.0, so you are granted to use, copy, distribute,
transmit and adapt this work, but you must attribute the work to the original
authors and distribute the resulting work under similar terms.
This work is supported by EzWeb project and is being partially funded by the Spanish Ministry of Industry, Tourism and Commerce under the National Plan for Scientific Research, Development and Technological Innovation 2004-2007 (grant number TSI-020301-2009-13).
This document is the specification of a formal vocabulary for recommendations in the Semantic Web. The aim of this ontology is to provide the main design patterns to formalize preferences in the OWL-DL language, providing concepts and properties to represent different kind of preferences, user demands on marketplaces and utilities of resources. This ontology is designed as a generic model, thus its scope is not limited to the context of the EzWeb project. RECO vocabulary intends to be widely adopted by the Linked Data community as it provides the means to represent preference relations in combination with any RDFS/OWL vocabularies.
This document has been reviewed by the involved partners in this workpackage and other interested parties and it contains the final design of RECO Ontology. This specification has been expressed in earlier versions and widely reviewed satisfying the needs of the project.
This document is generated by combining a machine-readable RECO Ontology Namespace expressed in RDF/XML with a specification template. This document may be updated from implementation experience, but no commitment is made by the authors regarding future updates.
This document presents an OWL ontology for representing preferences in the context of the Semantic Web. A preference will be defined in this ontology as a desire of a person about properties of objects, for instance, “John loves blue and sportive cars”. This information seems to be essential in order to allow the description of people interests and appealingness in RDF/OWL.
This ontology is under a normative namespace:
http://ontologies.ezweb.morfeo-project.org/reco/ns#
Using content negotiation and following the best practice recipes for publishing RDF vocabularies [RDF Recipes], the ontology can be accessed to a human-readable specification (this document) and to a RDF document with formal definition of the terms used.
This vocabulary and its specification corresponds to the Deliverable D2.1 of the EzWeb project.
An alphabetical index of RECO terms, by class (concepts) and by property (relationships, attributes), are given below. All the terms are hyperlinked to their detailed description for quick reference.
Classes: CompositePreference, Demand, Filter, ModalDescription, Operator, Pattern, Preference, Profile,
Properties: andComposition, asksFor, desireTowards, excludedPreference, filter, internallyRepresents, negativePreference, notDesireTowards, operator, positivePreference, refinedBy, requiredPreference, unionComposition, utilityValue,
This section provides a general description of the ontology, explaining the main concepts such as preference or demand. Moreover, this section introduces the most basic design patterns for using the vocabulary of the ontology: simple and composite preferences and datatype constraints. RECO ontology is specially designed to be used by matchmaking and recommendation applications that are fueled by user desires and preferences.
The diagram below graphically shows in a global way the concepts and properties comprising RECO:

The central concept of the ontology is preference, which is defined as a desire of a rational agent about properties of objects. A preference might be interpreted as a set of matchmaking conditions in a particular set of resources or objects, where they should satisfy this conditions in order to be considered valid, suitable or even useful. Personalized recommendations must be generated using the proper preferences of users, matching their actual desires and interests.
Liking preferences: A liking preference is, for instance, an
expression as "A person likes [p1]", where the person has a positive
attitude towards a particular object, commodity or
service.

In the diagram the resource ex:pref1 has two complementary roles. On the one hand, it represents the preference which the user is modally related to (e.g. the user desires ex:pref1). This is illustrated by the fact that ex:pref1 is an instance of the class Preference. On the other hand, ex:pref1 also holds the desired conditions that should be matched by resources of a particular marketplace in order to be considered useful (i.e., a resource to fulfill the preference must be a car). This mechanism, where the proper preference may be interpreted as both an instance of the class Preference and the resource related with the user desired conditions, allows to express preferences and modal attitudes inside the expressive limits of OWL-DL.
Disliking preferences: in a disliking preference, for instance any
expression similar to "A person doesn't like [p2]", a person or rational
agent shows a negative attitude towards a particular object, commodity or
service.
Preferences may be identified both as blank nodes or named resources. In this specification we alternate examples using both options. Notice that blank nodes are interpreted using standard RDF semantics, conditioning the reusability of preferences outside the RDF graph where they are defined.
Preferences can be ranked depending on the interest of users. For instance, if you consider the expression "I like grapes, but I would rather select pineapples", this means that you like both fruits but if you have to decide you would choose the last one. In our approach, instead of using fuzzy operators that bring us the modal semantics of preference, we decided to use a numerical value to determine the salience of the preference. Therefore the ranking of preferences is easily calculated taking into account their saliency, called in the ontology reco:utilityValue:

In addition, the property reco:utilityValue is also used to represent the utility of a candidate, where we understand utility as a measurement of the user satisfaction about an object or resource. Basically, the utility is a function that maps resources from a set of candidates to real numbers considering the user preferences the candidates fulfill. The numerical value of the utility is represented using the property reco:utilityValue. Thefore, given two resources ex:A and ex:B, if the utility for a rational agent of ex:A is greater than the utility of ex:B: i.e., U(ex:A) > U(ex:B), then the agent prefers ex:A to ex:B.
ex:A reco:utilityValue "0.7"^^xsd:float . ex:B reco:utilityValue "0.3"^^xsd:float .
This relation of "preference" is used to produce recommendations (i.e., to make decisions and selections over maketplaces of candidates) because it introduces a partial order between a set of candidates (i.e., a ranking of the marketplace resources). Therefore, this ordered list of candidates might be used by applications to generate personalized recommendations and suggestions to the user. In this sense, utilities (expressed with reco:utilityValue) may be used to rationalize the relators of the Preference Logic whether the following axioms of the Utility Principle hold:
ex:B
ex:BIn the Preference Logic, the relation of preference between two candidates
of a marketplace is represented by means of the relator:
, i.e.,
ex:A is preferred than ex:B. Moreover, the relator
is used to represent the indifference of an agent between two candidates.
The scale to measure the utility is arbitraty. It depends on the requirements of particular applications of the vocabulary. Usually, utility values will be normalized within the range (0,1), although this is not mandatory nor normative.
A more complex case can be considered when preferences are grouped together. Combined in such a way, a group of preferences set up a demand. From the user's point of view, a demand is another kind of modal description representing the willingness of a user to "purchase" or acquire a commodity or a service. A demand is always evaluated in a particular marketplace of objects, where the set of preferences comprising a demand expresses a set of matchmaking conditions.
Furthermore, demands feature four different groups of preferences. Each type of preference plays a differente role in the interpretation of the demand on a particular marketplace of resources.
Following, there is an illustration of a demand using the ontology:

This subsection presents the basic guidelines for representing preferences using the RECO vocabulary.
A desired condition of a commodity in a preference is expressed by a statement of the form (preference, P, O) where:
Sometimes preferences are more complex than a simple triple (preference, P, O). Consider for instance a preference like the following: "Crime films starred by people born in Spain". This preference has two conditions. The first one is very simple: "Crime films". It declares the film genre desired by the user. However, the second one requires a more complex analysis: "starred by people being born in Spain". A film is starred by actors and these actors (as any individual) have their own semantic description. This time the condition is not asking about a property of films, but about a property of the actors starring in a film (i.e. the Spanish nationality). Therefore, a film that satisfies the conditions of the preference has to be not only a crime film but the starring actors must be Spanish. We will consider this kind of preference as a complex preference.
We use the class reco:Pattern to represent a set of conditions about an individual, where this individual is not the proper preference. In our example, the pattern represents the condition that actors of the film has to be Spanish people.
ex:pref1 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
skos:subject dbpedia:Category:Crime_films ;
p:starring ex:pattern1 .
ex:pattern1 rdf:type reco:Pattern ;
p:born dbpedia:Spain .
In addition to this last example, patterns can be part of another pattern as well. Patterns are sets of conditions about an individual that can be (re)used by another pattern to build a more complex condition on a preference. Consider for instance the following preference "Films starred by actors whose wives are also actors". In this preference, two patterns can be identified. The first one asks about actors starring in the film. And the second one expresses a condition about the spouses of these actors. The representation in our ontology is the following:
ex:pref2 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
p:starring ex:pattern1 .
ex:pattern1 rdf:type reco:Pattern ;
p:spouse ex:pattern2 .
ex:pattern2 rdf:type reco:Pattern ;
rdf:type dbpedia-owl:Actor .

Sometimes it is also needed that an individual fulfills two or more different preferences. So we need to add a new class capable of describing this situation. A new class, called reco:CompositePreference, is created. This class allows us to group together a set of preferences aplied to a marketplace.
If we want to express an individual to fulfill all the preferences included in a composite preference, the property reco:andComposition must be used, as the following example shows: "Crime films directed by Quentin Tarantino shorter than 120 minutes"
ex:pref3 rdf:type reco:CompositePreference ;
reco:andComposition ex:pref1 ;
reco:andComposition ex:pref2 .
ex:pref1 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
p:director dbpedia:Quentin_Tarantino ;
skos:subject dbpedia:Category:Gangster_films .
ex:pref2 rdf:type reco:Preference ;
dbpedia-owl:Film#runtime "120"^^xsd:integer ;
reco:filter op:numeric-less-than .
Notice that it is possible to represent these preferences without using the AND composite patterns. It would be simplified just considering all the matchmaking conditions as part of the same preference. The introduction of the AND composite pattern might seem redundant, although it is justified at least by two reasons:
Using the AND pattern, a candidate to achieve the composite preference must always fulfill the preferences it is comprised by. However, sometimes this is very restrictive and a candidate might fulfill just some of the simple preferences but still achieving the composite one. For these cases, a new pattern for composite preferences, featuring the property reco:unionComposition, is used to bring together all the preferences in a disjunction.
An example of that is showed here: "Crime films directed by Quentin Tarantino or by Brian de Palma".
ex:pref3 rdf:type reco:CompositePreference ;
reco:unionComposition ex:pref1 ;
reco:unionComposition ex:pref2 .
ex:pref1 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
p:director dbpedia:Quentin_Tarantino ;
skos:subject dbpedia:Category:Gangster_films .
ex:pref2 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
p:director dbpedia:Brian_De_Palma ;
skos:subject dbpedia:Category:Gangster_films .
This preference might also be expressed by means of a combination of AND and UNION composite pattern. The following expression is equivalent to the last one but it demands a recursive interpretation of the composition of preferences:
ex:pref3 rdf:type reco:CompositePreference ;
reco:andComposition ex:pref1
reco:andComposition ex:pref2
ex:pref1 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
skos:subject dbpedia:Category:Gangster_films .
ex:pref2 rdf:type reco:CompositePreference ;
reco:unionComposition ex:pref4 ;
reco:unionComposition ex:pref5 .
ex:pref4 rdf:type reco:Preference ;
p:director dbpedia:Brian_De_Palma .
ex:pref5 rdf:type reco:Preference ;
p:director dbpedia:Quentin_Tarantino .
Conditions about datatype properties have a particular status in our approach. A statement of the form (s,p,l) in RDF, where l is a literal, only captures the fact that l is the fixed value for the property p when applied to s. But when we are talking about preferences, we need more expressivity. Constraints on literals need to be added to our ontology to be able to express conditions such as "Films shooted before 1970".
Therefore a mechanism to represent constraints on values of datatype properties has been defined, allowed to be used both in reco:Preference and in reco:Pattern assertions. The mechanism is comprised by:
The aforementioned example is formalized as follows:
ex:pref1 rdf:type reco:Preference ;
rdf:type dbpedia-owl:Film ;
reco:filter ex:filter1 .
ex:filter1 rdf:type reco:Filter ;
dbpedia-owl:releaseDate "1970-01-01"^^xsd:date ;
reco:operator reco:lesserThan .
In the literature of preferences, many entities may exert modal attitudes such as preferences, but also desires, beliefs, inclinations, etc. This ontology is designed to be used in combination with the widely-adopted FOAF vocabulary. In particular, the following entities have been considered:
However, it is envisioned that other kind of entities might as well exert preferences. In this case, we strongly recommend to not use the already defined property of the ontology: reco:desireTowards, as DL rules might lead into undesirable conclusions. An ad-hoc property can be created for this purpose.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#CompositePreference
Composite preference - A complex representation of a preference to express the union or the intersection of two or more preferences using AND and OR operators. A composite preference uses one and only one operator. Both operators are incompatible.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Demand
Demand - The willingness to achieve a commodity or a service with certain properties. Basically a demand is a set of preferences: mandatory, positive, negative or excluding.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Filter
Filter - A preferred condition on a datatype property.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#ModalDescription
Modal Description - A modal description consists in the specification of a modal target: desire, right, power, duty, etc. From the formal semantic viewpoint, a modal description is the reification of a relation involving a modal logic operator.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Operator
Operator - Elements that define operations on literals in a filter: string comparisons, numerical ranges, etc. Operators are equivalent to their corresponding SPARQL built-ins.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Pattern
Pattern - An individual that satisfies some preferred conditions. These individuals can be interpreted as variables in matchmaking applications.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Preference
Preference - A desired property of a commodity or a service.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#Profile
Profile - The user profile of an agent. An agent might have more than one profile: user profiles vary according to their contexts and situations.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#andComposition
AND Composition - A property which matches each composite-preference with the set of preferences composing it. Being an and-Composition, all the preferences have to be realised.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#asksFor
Asks For - The relationship between a user profile, agent or a group of agents and their demands, which can be mandatory, positive, negative or exclusive.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#desireTowards
Desire Towards - A modal relation expressing that a user has a strong preference towards something.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#excludedPreference
Excluded Preference - This property relates a demand with a particular condition P. Individuals that fulfill this condition P are excluded from the set of valid candidates for this demand.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#filter
Filter - A property which develops the pattern restraining the value of a datatype property.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#internallyRepresents
Internally Represents - A user internally represents (in her mind) a modal description: a desire, a plan, a duty, etc.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#negativePreference
Negative Optional Preference - This property relates a demand with a particular condition P. Individuals that fulfill this condition P decline their utility value.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#notDesireTowards
Not Desire Towards - A modal relation expressing the absence of a preference towards something.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#operator
Operator - A property which matches a pattern to the operator restraining the value of a datatype property.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#positivePreference
Positive Optional Preference - This property relates a demand to a preference P in an optional way. Individuals that fulfill the condition P increase their utility value.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#refinedBy
Refined By - A modal description can be refined by adding new components.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#requiredPreference
Required Preference - This property relates a demand with a preference P in a mandatory way. Individuals that fulfill the condition P are considered valid candidateds for this demand.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#unionComposition
UNION Composition - A property which matches each composite-preference with the set of preferences composing it. Being a union-Composition, at least one of the preferences has to be realised.
URI: http://ontologies.ezweb.morfeo-project.org/reco/ns#utilityValue
Utility Value - This property represents the utility value of a commodity or a service according to the preferences of the user.
| Prefix | XML Namespace | Specification |
|---|---|---|
| dbp | http://dbpedia.org/ontology/ | The DBpedia Ontology: classes |
| dbpp | http://dbpedia.org/property/ | The DBpedia Ontology: properties |
| foaf | http://xmlns.com/foaf/0.1/ | Friend of a Friend (FOAF) Vocabulary |
| reco | http://ontologies.ezweb.morfeo-project.org/reco/ns# | RECommendations Ontology |
| skos | http://www.w3.org/2004/02/skos/core# | SKOS Core Vocabulary |
This document was produced with the participation of the EzWeb project consortium (by alphabetic order):
This specification has been generated using SpecGen.