yaz/commit
add routines to create a user graph
author | Michiel Hildebrand |
---|---|
Fri Mar 30 17:03:22 2012 +0200 | |
committer | Michiel Hildebrand |
Fri Mar 30 17:03:22 2012 +0200 | |
commit | 4a911774a009e1540d7ba398fd3e5800d9769f7c |
tree | dcc0fbf39c91df5f226cf3169a2056c0fa45c57c |
parent | 1dbfca79b0545d26b1c1abe421730671663abf45 |
Diff style: patch stat
diff --git a/lib/user_prov.pl b/lib/user_prov.pl index d68b640..f663d70 100644 --- a/lib/user_prov.pl +++ b/lib/user_prov.pl @@ -1,7 +1,51 @@ :- module(user_prov, - [list_user_tags/0]). + [write_graph_csv/0, + user_match/2, + list_user_tags/0]). :- use_module(library(semweb/rdf_db)). +:- use_module(library(video_annotation)). + + +create_user_graph(Video, UserRelations) :- + findall(r(User1,User2), + ( user_match(Video, _Tag-Users), + member(_-User1,Users), + member(_-User2,Users), + User1 \== User2 + ), + UserRelations). + +write_graph_csv :- + tell('user_graph.csv'), + findall(r(User1,User2), + ( annotated_video(Video), + create_user_graph(Video, UserRelations), + member(r(User1,User2), UserRelations) + ), + Relations0), + sort(Relations0, Relations), + forall(member(r(U1,U2), Relations), + ( rdf_global_id(_:UN1, U1), + rdf_global_id(_:UN2, U2), + format('~w,~w~n',[UN1,UN2]) + )), + told. + +annotated_video(Video) :- + rdf(Video,rdf:type,pprime:'Video'), + once(rdf(Video,pprime:hasAnnotation,_)). + +user_match(Video, Tag-Users) :- + video_annotations(Video,As,[interval(10)]), + member(annotation(Tag,_S,_E,Entries,_Score),As), + length(Entries,N), + N>1, + findall(Time-User, + (member(i(Entry,Time),Entries), + rdf(Entry,pprime:creator,User) + ), Users). + list_user_tags :- user_tags(PlayerTags),