:- module(videos, [ ingested_videos/1, % -Videos video_queue/1, % -Videos active_videos/2, % ?User, -Videos moderated_videos/2, % ?User, -Videos suggested_videos/2, % ?User, -Videos ingested_video/2, % ?Video, ?IngestionTime active_video/4, % ?User, ?Process, ?Video, ?StartTime moderated_video/5, % ?User, ?Process, ?Video, ?StartTime, ?EndTime suggested_video/2, % ?User, ?Video video_label//1 % +Count ]). :- use_module(library(semweb/rdf_db)). :- use_module(library(http/html_write)). %% ingested_videos(-Videos) % % Returns a list Videos that are ingested. % % Params: % * User % When defined Videos are limited to the videos assigned to % this User. ingested_videos(SortedVideos) :- findall(Time-Video, ingested_video(Video, Time), Pairs0), keysort(Pairs0, Pairs1), reverse(Pairs1, Pairs), pairs_values(Pairs, SortedVideos). %% video_queue(?User, -Videos) % % Returns a list Videos that are ingested and not moderated % yet. % % Params: % * User % When defined Videos are limited to the videos assigned to % this User. video_queue(SortedVideos) :- findall(Time-Video, ( ingested_video(Video, Time), \+ in_moderation(Video, _) ), Pairs0), keysort(Pairs0, Pairs1), reverse(Pairs1, Pairs), pairs_values(Pairs, SortedVideos). %% active_videos(?User, -Videos) % % Returns a list Videos that are moderated. % % Params: % * User % When defined Videos are limited to the videos assigned to % this User. active_videos(User, SortedVideos) :- findall(Time-Video, ( active_video(User, Video, _, Time) ), Pairs0), keysort(Pairs0, Pairs1), reverse(Pairs1, Pairs), pairs_values(Pairs, SortedVideos). %% moderated_videos(?User, -Videos) % % Returns a list Videos that are moderated. % % Params: % * User % When defined Videos are limited to the videos assigned to % this User. moderated_videos(User, SortedVideos) :- findall(Time-Video, ( moderated_video(User, Video, _, _, Time) ), Pairs0), keysort(Pairs0, Pairs1), reverse(Pairs1, Pairs), pairs_values(Pairs, SortedVideos). %% suggested_videos(+User, -Videos) % % Returns a list Videos that are suggested to User suggested_videos(User, Videos) :- findall(Video, suggested_video(User, Video), Videos). %% ingested_video(?Video, ?Time) % % True if Video is ingested at Time by User. ingested_video(Video, Time) :- rdf(Video, rdf:type, pprime:'Video'), ( rdf(Video, pprime:ingestedAt, literal(IngestionTime)) -> Time = IngestionTime ; Time = 0 ). %% active_video(?User, ?Video, ?Process, -StartTime) % % True if Video is currently under moderation by User in Process. active_video(User, Video, Process, Time) :- rdf(Process, opmv:used, Video), rdf(Process, opmv:wasControlledBy, User), rdf(Process, rdf:type, pprime:'TagGarden'), rdf(Process, opmv:wasStartedAt, literal(Time)), \+ rdf(Process, opmv:wasEndedAt, _), \+ rdf(Process, rdf:type, pprime:'Hidden'). %% moderated_video(?User, ?Video, ?Process, -StartTime, -EndTime) % % True if Video is moderated by User in Process. moderated_video(User, Video, Process, StartTime, EndTime) :- rdf(Process, opmv:used, Video), rdf(Process, opmv:wasControlledBy, User), rdf(Process, rdf:type, pprime:'TagGarden'), rdf(Process, opmv:wasStartedAt, literal(StartTime)), rdf(Process, opmv:wasEndedAt, literal(EndTime)), \+ rdf(Process, rdf:type, pprime:'Hidden'). %% suggested_video(?User, ?Video, ?Process) % % True if video is suggested to User by Process. suggested_video(User, Video) :- rdf(User, pprime:suggestion, Video), \+ in_moderation(Video, _). in_moderation(Video, Process) :- rdf(Process, opmv:used, Video), rdf(Process, rdf:type, pprime:'TagGarden'), \+ rdf(Process, rdf:type, pprime:'Hidden'). video_label(1) --> html(video). video_label(_) --> html(videos).