%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Merges several RDF graphs to find user %% %% preferences according to preference hierarchy%% %% -------------------------------------------- %% %% For more details see Oliver Bolzer, "Towards %% Data-Integration on the Semantic Web: Querying %% RDF with Xcerpt". Diploma Thesis, 2004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rule No. 1, load default device profile CONSTRUCT RDF-FILE[ "http://mobileinternet.panasonicbox.com/UAprof/GD67/04.xml", var Root ] FROM in{ resource{ "http://mobileinternet.panasonicbox.com/UAprof/GD67/04.xml" }, var Root } END % Rule No. 2, load override profile CONSTRUCT RDF-FILE[ "file:///tmp/36e7ba4f.rdf", var Root ] FROM in{ resource{ "file:///tmp/36e7ba4f.rdf" }, var Root } END % Rule No. 3, load database of maps CONSTRUCT CONSTRUCT RDF-FILE[ "http://example.com/maps.rdf", var Root ] FROM in{ resource{ "http://example.com/maps.rdf" }, var Root } END % Rule No. 4, abstract data out from default profile CONSTRUCT DEFAULT-PROFILE[ var Prof, var VALUE ] FROM RDF{{ attributes{{ origin{ "http://mobileinternet.panasonicbox.com/UAprof/GD67/04.xml" } }}, /.*/:/.*/{{ /http://www.openmobilealliance.org/tech/profiles/uaprof/.*#(var Prof as .*)/:uri{ literal{ var VALUE } }} }} END % Rule No. 5, abstract data out from override profile CONSTRUCT USER-PROFILE[ var PROFILE, var VALUE ] CONSTRUCT RDF{{ attributes{{ origin{ "file:///tmp/36e7ba4f.rdf" } }}, /.*/:/.*/{{ /http:\/\/www.openmobilealliance.org/tech/profiles/uaprof/.*#(var PROF as .*)/:uri{ literal{ var VALUE } }} }} ]] END % Rule No. 6, merge default and override profiles CONSTRUCT PROFILE[ var KEY, var VALUE ] FROM if USER-PROFILE[ var KEY, var VALUE ] then USER-PROFILE[ var KEY, var VALUE ] else DEFAULT-PROFILE[ var VENDOR, var MODEL, var KEY, var VALUE] END % Rule No. 7, use merged profiled data to query appropriate maps GOAL var IMAGE_URI FROM and[ PROFILE[ "ScreenSize", /(var SCREEN_W as [:digit:]+)x(var SCREEN_HT as [:digit:]+)/ ], PROFILE[ "ColorCapable". var COLOR ], RDF{{ "http://example.org/racetrack":uri{{ "http://xmlns.com/foaf/0.1/depiction":uri{ var IMAGE_URI:uri{{ "http://example.org/image#width":uri{ literal{ var IMAGE_W } }, "http://example.org/image#height":uri{ literal{ var IMAGE_H } }, "http://example.org/image#color":uri{ literal{ var COLOR } } }} where { var IMAGE_W <= var SCREEN_W and var IMAGE_H <= var SCREEN_H } } }} }} ] END