today I like to announce a first draft of the Recommendation
Ontology[1,2,3]. As far as I get an overview, there exists currently no
ontology, which address this purpose as I intended it.
With this ontology it should be possible to associate a recommendation
to someone or something. The recommendation itself includes the
recommendation objects and a relation to the recommender, e.g. an
is:InfoService instance. The association and/or similarity statements,
which are describing the reasons for a recommendation, can be described
on the basis of the sim:Association[4] concept, which can be related to
a sim:association concept by the property ao:included_association[5].
The aim of the Recommendation Ontology is to serve recommendations from
different information services to users (or something) by having also
the opportunity to describe the reasons for the recommendation and
hence, enable transparency. A use case example, which follows the idea
of transparency recommendations is dbrec.net[6].
Please let me know, what do you think about this modelling. Comments,
critics and suggestions are very welcome.
Cheers,
Bob
[1] http://smiy.sourceforge.net/rec/rdf/recommendationontology.n3
[2] http://smiy.sourceforge.net/rec/rdf/recommendationontology.owl
[3] http://smiy.sourceforge.net/rec/gfx/rec_-_recommendation.gif
[4] http://purl.org/ontology/similarity/Association
[5]
http://purl.org/ontology/ao/associationontology.html#included_association
[6] http://dbrec.net/
today I modelled a music recommendation[1,2] example with help of the
Recommendation Ontology. Therefore, I also added new extensions to the
ontology for testing purpose, these are:
- rec:RankedRecommendation - a ranked recommendation that includes an
ordered list of recommendations
- rec:ranked_recommendation_object - a ranked recommendation object in a
ranked recommendation
Please let me know, what do you think about this modelling. With the help
of ranked recommendations one is able to create an order re. the
recommendation object without getting into the details about the
creation of this order. Hence, such a ranked recommendation is more or
less on its highest level. However, one can also add some background
information (see the sim:included_association relations), which are the
hook to the details.
Furthermore, this modelling should enable the comparison of different
recommendations/ranked recommendation for someone/something.
I'm currently a bit unsure, where I should include the subject of a
recommendation, if it is a personalised recommendation. I thought that
the user would be related by rec:recommendation (ex:AUser
rec:recommendation ex:ARecommendation). However, the subject, e.g. seed
tracks (objects) etc. must be related by included associations then, or?
Another option would be to relate them directly by sim:subject, but there
is also the use case where a recommendation is based on an
association statement as it is exemplified here[3]. This leads maybe to
some inconsistency ;)
Any suggestions? (Kurt? ;) )
Cheers,
Bob
[1] http://smiy.sourceforge.net/rec/examples/N3/music_rec_-_example.n3 [2]
http://smiy.sourceforge.net/rec/examples/N3/music_rec_-_example.owl [3]
http://purl.org/ontology/ao/associationontology.html#sec-example
The Recommendation Ontology looks quite interesting...
Kurt - could you explain a bit more as how to use it? I'm hoping to
write something which would make recommendations of pieces of music
based on specific musical attributes (such as harmonic progression,
rhythm etc) - could the recommendation ontology be used for that?
Thanks
Joshan
> --
> You received this message because you are subscribed to the Google
> Groups "Music Ontology Specification Group" group.
> To post to this group, send email to music-ontology-sp...@googlegroups.com
> .
> To unsubscribe from this group, send email to music-ontology-specific...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/music-ontology-specification-group?hl=en
> .
>
I think this should be possible with the Similarity Ontology[1] (please
have a look at the examples and sim:AssociationMethod). The Recommendation
Ontology works also on top of the Similarity Ontology and is currently
only a draft. So be careful, if you are planning to use the Recommendation
Ontology. There might change some things in the future (the whole ontology
is maybe obsolete).
Another possibility is maybe the Association Ontology[2] (another
conceptual idea ;) ), if would like to model something like idiosyncratic
music genre. You can for example create sub properties from
dcterms:suject, e.g. ex:rhythm.
Cheers,
Bob
[1] http://purl.org/ontology/similarity/
[2] http://purl.org/ontology/ao/associationontology.html
thanks a lot for you response. That means that you are feeling fine with
the current modelling?
Am 31.07.2010 19:12, schrieb Alex:
> Hi,
>
>
> On Jul 31, 1:08 pm, z...@elbklang.net wrote:
>> Hello again,
>>
>> today I modelled a music recommendation[1,2] example with help of the
>> Recommendation Ontology. Therefore, I also added new extensions to the
>> ontology for testing purpose, these are:
>>
>> - rec:RankedRecommendation - a ranked recommendation that includes an
>> ordered list of recommendations
>> - rec:ranked_recommendation_object - a ranked recommendation object in a
>> ranked recommendation
>>
>> Please let me know, what do you think about this modelling. With the help
>> of ranked recommendations one is able to create an order re. the
>> recommendation object without getting into the details about the
>> creation of this order.
>
> In dbrec, I've modeled the LDSD ontology (that should be mapped
> further with MuSim and now with this Recommendation Ontology, I'll
> email the list about this later).
> Instead of ranking the recommendations, each recommendation got a
> particular score, so that I can use ORDER / OFFSET in SPARQL to order
> the recommendations and limit them to a particular set.
> I found that more appropriate than a ranked object, but I guess both
> can be combined if needed.
Well, I introduced the "high level" ranking for recommendations, which are
probably somewhere calculated, e.g. Last.fm or EchoNest, and then
requested by a customer (probably over a REST web service), which likes to
reuse these recommendations. As you can see from the example[1,2], the
weights, distances or whatever similarity metrics are separately attached
to the recommendation.
Btw, is it also possible to retrieve the similarity descriptions ("Why are
they related?"), which are created at dbrec, as Semantic Graph (RDF/XML,
RDF/Turtle, ...) somewhere.
I would be very happy, if you are doing the mapping to the Similarity and
Recommendation Ontology, because dbrec reflects a very good (my initially
intended) use case.
I think this is an interesting idea. Using OLO is a nice touch.
One criticism that has been leveled at MuSim is that it is impractical
for a large corpus of items. If you have a set of N things you
potentially need (N-1)^2 similarity/associations/recommendations.
With MuSim this could really bloat your triple store. I'm afraid the
Recommendation Ontology approach suffers from the same problem. I
think including associations with ao:included_association as well as
recommendations is a bit redundant, and in a practical appllicaiton
you probably wouldn't do this. However, I agree an association is not
quite the same thing as a recommendation. Anyway without the
associations, a recommendation modeling is slightly more efficient
than a musim modeling i think (4 triples per item in rec and 5 triples
per item in musim if i count right). So well done!
[snip]
> I'm currently a bit unsure, where I should include the subject of a
> recommendation, if it is a personalised recommendation. I thought that
> the user would be related by rec:recommendation (ex:AUser
> rec:recommendation ex:ARecommendation). However, the subject, e.g. seed
> tracks (objects) etc. must be related by included associations then, or?
> Another option would be to relate them directly by sim:subject, but  there
> is also the use case where a recommendation is based on an
> association statement as it is exemplified here[3]. This leads maybe to
> some inconsistency ;)
this is a very important point i think. personalize recommendations
are a big deal and this should be very clear in the modeling imho.
maybe you introduce another property here?
rec:for a rdfs:Class;
rdfs:domain rec:Recommendation ;
rdfs:range sioc:User .
not sure this is really a great solution tho. consider there are a
variety of scenarios: recommendation of an item based on another
item, recommendation of an item based on a user profile,
recommendation of an item based on interest in an item and a user
profile, and even recommendations with no basis! perhaps there's even
other scenarios i'm not considering...
/me having a think about it...
-kurt j
You can use MuSim for the use case you describe:
:HarmonicallySimilar a sim:AssociationMethod ;
dc:description "similarity by harmonic progression" .
:RhytmicallySimilar a sim:AssociationMethod;
dc:description "similar rhythms" .
:SignalA a mo:Signal .
:SignalB a mo:Signal .
:SignalC a mo:Signal .
[a sim:Similarity ;
sim:element :SignalA ;
sim:element :SignalB ;
sim:method :HarmonicallySimilar ]
[a sim:Similarity ;
sim:element :SignalB ;
sim:element :SignalC ;
sim:method :RhythmicallySimilar ]
There is an example implementation that might help here:
http://classical.catfishsmooth.net/about
Altho it is in desparate need of cleaning up. In the above example
there are three association methods - audio-based timbre similarity,
audio-based tonality similarity, and expert determined influence
between artists. You can see examples of how these similarities can
be combined with sparql.
http://classical.catfishsmooth.net/snorql/
Hope that helps! Let me know if I can be of any more assistance.
-Kurt J
>> [1] http://smiy.sourceforge.net/rec/examples/N3/music_rec_-_example.n3 [2]
I better get working!
Josh
>ex:ASimilarity a sim:Similarity ;
> sim:element :SignalA ;
> sim:element :SignalB ;
> sim:method :HarmonicallySimilar ;
> sim:method :RhythmicallySimila
well i'd make this two statements
ex:ASimilarity a sim:Similarity ;
sim:element :SignalA ;
sim:element :SignalB ;
sim:method :HarmonicallySimilar .
ex:AnotherSimilarity a sim:Similarity ;
sim:element :SignalA;
sim:element :SiganlB;
sim:method :RhytmicallySimilar ;
and then you combine in SPARQL
SELECT ?sigA ?sigB WHERE {
?sim1 sim:element ?sigA, ?sigB ;
sim:method :RhythmicallySimilar .
?sim2 sim:element ?sigA, ?sigB ;
sim:method :HarmonicallySimilar .
}
In this query you're finding ?sigA and ?sigB that share _both_ a
harmonic and rhythmic similarity according to those two specific
association methods. Make sense?
At classical.catfishsmooth.net/snorql this is what we're doing as well
actually. Association methods are not merged in the RDF but in the
SPARQL queries over the RDF.
I really need to setup a good example with _lots_ of audio-based
analysis stuff. Sorry the crap at classical.catfishsmooth is the best
i've got right now. And i've got other things on the plate right now
(stay tuned for details ;-)
-Kurt J
>>ex:ASimilarity a sim:Similarity ;
>> sim:element :SignalA ;
>> sim:element :SignalB ;
>> sim:method :HarmonicallySimilar ;
>> sim:method :RhythmicallySimila
>
> well i'd make this two statements
>
> ex:ASimilarity a sim:Similarity ;
> Â sim:element :SignalA ;
> Â sim:element :SignalB ;
> Â sim:method :HarmonicallySimilar .
>
> ex:AnotherSimilarity a sim:Similarity ;
> Â sim:element :SignalA;
> Â sim:element :SiganlB;
> Â sim:method :RhytmicallySimilar ;
let me be more clear about why this is (i believe) the right way to
model a multi-faceted similarity. in our example here, we are talking
about two distinct dimensions of similarity - rhythmic and harmonic.
MuSim is designed to embrace compound similarities - two things can be
similar in many different ways. In some applications we might care
only about rhythmic similarities, sometimes we might care about
harmonic, and sometimes we might care about both.
There's nothing inherently wrong with creating a merged association
method that deals with both rhythm and harmony if that's what your
application calls for. But i would call this a new association
method, e.g.
:RhythmicHarmonicSimilarityMethod a sim:Similarity .
ex:ASimilarity a sim:Similarity ;
sim:element :SignalA ;
sim:element :SignalB ;
sim:method :RhythmicHarmonicSimilarityMethod .
I think it makes sense for the cardinality of sim:method to be exactly
one. An association should be derived from a single association
method. I might add this restriction to MuSim unless there are any
serious objections (Bob-o?)
-kurt j
The Recommendation Ontology sounds a very good idea - looks like it
should be useful around social web sites and expressing things like
Amazon's recommendations.
Another example you may like to try is using it alongside the Review Vocabulary:
http://vocab.org/review/terms.html
To see the key terms in use, pick any review from:
and have a look through the RDF Metadata link on the right.
Don't know if you seen it already, but SpecGen is very handy for
generating HTML docs from RDF/XML (to create the "namespace
document"):
http://forge.morfeo-project.org/wiki_en/index.php/SpecGen
Cheers,
Danny.
FYI, the Recommendation Ontology now officially announced at SMI ;)
The Recommendation Ontology now officially announced ;)
http://smiy.wordpress.com/2010/08/07/the-recommendation-ontology/
Cheers,
Bob
Have you considered temporal dimensions re. playlists and favorite music?
--
Regards,
Kingsley Idehen
President & CEO
OpenLink Software
Web: http://www.openlinksw.com
Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca: kidehen
Am 07.08.2010 14:05, schrieb Kingsley Idehen:
> Bob Ferris wrote:
>> Hello everybody,
>>
>> FYI, the Recommendation Ontology now officially announced at SMI ;)
>>
>> The Recommendation Ontology now officially announced ;)
>> http://smiy.wordpress.com/2010/08/07/the-recommendation-ontology/
>>
>> Cheers,
>>
>>
>> Bob
>>
> Bob,
>
> Have you considered temporal dimensions re. playlists and favorite music?
What do you mean exactly? Something like a creation and or modification
date? Or something like in the direction of Memento?
I think the whole provenance handling can't be a part of these
ontologies that must be handled by other techniques and systems.
However, in general it should be possible to analyse one's musical taste
of the time re. changes, which can influence then the recommendation
and/or playlist creation tasks. Of course, a continuing analysis of the
musical taste is necessary.
Maybe you can go a bit more into detail, what you are meaning with
considering temporal dimensions.
Cheers,
Bob
Creation and modification dates.
> Or something like in the direction of Memento?
> I think the whole provenance handling can't be a part of these
> ontologies that must be handled by other techniques and systems.
> However, in general it should be possible to analyse one's musical
> taste of the time re. changes, which can influence then the
> recommendation and/or playlist creation tasks. Of course, a continuing
> analysis of the musical taste is necessary.
>
> Maybe you can go a bit more into detail, what you are meaning with
> considering temporal dimensions.
Just want to track the evolution of ones music preferences via a Linked
Data graph :-)
Kingsley
>
> Cheers,
>
>
> Bob
As it is common I would also use DCTerms for that issue, e.g.
- dcterms:created
- dcterms:modified
>> Or something like in the direction of Memento?
>> I think the whole provenance handling can't be a part of these
>> ontologies that must be handled by other techniques and systems.
>> However, in general it should be possible to analyse one's musical
>> taste of the time re. changes, which can influence then the
>> recommendation and/or playlist creation tasks. Of course, a continuing
>> analysis of the musical taste is necessary.
>>
>> Maybe you can go a bit more into detail, what you are meaning with
>> considering temporal dimensions.
>
> Just want to track the evolution of ones music preferences via a Linked
> Data graph :-)
Yeah, if you mean music preferences than you would like to model user
profiles, the issue I'm currently dealing/struggling with ;)
There was a workshop at VoCamp 2010, where they dealt with this issue
and the alignment of the existing interest modelling ontology (see [1]).
For now, I have pushed the Weighted Interests Vocabulary into another
versions[2,3,4].
On top of the VoCamp proposal and the Weighted Interests Vocabulary
v0.2, I'm currently creating new concepts and properties to model
temporal dynamics of interests, as the modelling from e-foaf[5] is a bit
wrongly interpreted in their example (I guess). I'll like to make use of
the Event Ontology here.
So it's all work progress and the results will follow during the next
few days.
Cheers,
Bob
[1]
http://vocamp.org/wiki/HypiosVoCampParisMay2010#User_.28weighted.29_Interests_Ontology
[2]
http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.n3
[3]
http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.owl
[4]
http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/ChangeLog
[5] http://wiki.larkc.eu/e-foaf:interest
Yes, Event Ontology should come in handy for old party playlists, for
instance :-)
Kingsley
>
>
> Bob
>
> [1]
> http://vocamp.org/wiki/HypiosVoCampParisMay2010#User_.28weighted.29_Interests_Ontology
>
> [2]
> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.n3
>
> [3]
> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.owl
>
> [4]
> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/ChangeLog
>
> [5] http://wiki.larkc.eu/e-foaf:interest
>
If you would like to associate a playlist to an party event, this is
already possible, e.g.
ex:AFunkyPlaylist a pbo:Playlist ;
sim:association ex:KingsleysAssociation .
ex:KingsleysAssociation a sim:Association ;
ao:occasion ex:KingsleysBirthdayParty2008 .
ex:KingsleysBirthdayParty2008 a event:Event .
Cheers,
Bob
> Kingsley
>>
>>
>> Bob
>>
>> [1]
>> http://vocamp.org/wiki/HypiosVoCampParisMay2010#User_.28weighted.29_Interests_Ontology
>>
>> [2]
>> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.n3
>>
>> [3]
>> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/weightedinterests.owl
>>
>> [4]
>> http://smiy.svn.sourceforge.net/viewvc/smiy/weightedinterests/trunk/rdf/ChangeLog
>>
>> [5] http://wiki.larkc.eu/e-foaf:interest
>>
>
>
--
--------------------BEGIN-OF-SIGNATURE--------------------
Bob Ferris
website: http://elbklang.net
e-mail: za...@elbklang.net
--------------------END-OF-SIGNATURE----------------------