Chris@0: /* This file is part of ClioPatria. Chris@0: Chris@0: Author: Chris@0: HTTP: http://e-culture.multimedian.nl/ Chris@0: GITWEB: http://gollem.science.uva.nl/git/ClioPatria.git Chris@0: GIT: git://gollem.science.uva.nl/home/git/ClioPatria.git Chris@0: GIT: http://gollem.science.uva.nl/home/git/ClioPatria.git Chris@0: Copyright: 2007, E-Culture/MultimediaN Chris@0: Chris@0: ClioPatria is free software: you can redistribute it and/or modify Chris@0: it under the terms of the GNU General Public License as published by Chris@0: the Free Software Foundation, either version 2 of the License, or Chris@0: (at your option) any later version. Chris@0: Chris@0: ClioPatria is distributed in the hope that it will be useful, Chris@0: but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@0: GNU General Public License for more details. Chris@0: Chris@0: You should have received a copy of the GNU General Public License Chris@0: along with ClioPatria. If not, see . Chris@0: */ Chris@0: Chris@0: :- module(test_client, Chris@0: [ graph/2, % +QID, -Triple Chris@0: table/2, % +QID, -Row Chris@0: Chris@0: count/0, % Count triples Chris@0: Chris@0: list_repositories/0, Chris@0: clear/0, % Clear all content Chris@0: Chris@0: login/0, Chris@0: login/2, % +User, +Password Chris@0: logout/0, Chris@0: Chris@0: upload/1, % Upload File Chris@0: upload/2, % File, Options Chris@0: add/1, % +Triples Chris@0: del/1, % +Triple Chris@0: wns/0, % Upload wordnet Chris@0: Chris@0: sesame/0, % Select Java server Chris@0: local/0 % Use SWI-Prolog server Chris@0: ]). Chris@0: Chris@0: :- load_files(sesame_client, Chris@0: [ silent(true) Chris@0: ]). Chris@0: Chris@0: :- style_check(-atom). Chris@0: Chris@0: local :- Chris@0: set_sesame_default([ host(localhost), Chris@0: port(3020), Chris@0: path(''), Chris@0: repository(default) Chris@0: ]). Chris@0: Chris@0: sesame :- Chris@0: set_sesame_default([ host(gollem), Chris@0: port(4242), Chris@0: path('/sesame'), Chris@0: repository('mem-rdfs-db') Chris@0: ]). Chris@0: Chris@0: :- local. Chris@0: Chris@0: Chris@0: /******************************* Chris@0: * QUERIES * Chris@0: *******************************/ Chris@0: Chris@0: qg(1, 'construct distinct * from {S} P {O}'). Chris@0: qg(2, 'construct * from {} {L}'). Chris@0: Chris@0: graph(QueryID, Triple) :- Chris@0: qg(QueryID, Query), Chris@0: sesame_graph_query(Query, Chris@0: Triple, Chris@0: []). Chris@0: Chris@0: count :- Chris@0: qg(1, Query), Chris@0: findall(T, sesame_graph_query(Query, T, []), Ts), Chris@0: length(Ts, Len), Chris@0: format('~D triples in store~n', [Len]). Chris@0: Chris@0: qt(1, 'select distinct S from {S} P {O} where O like "Resource"'). Chris@0: Chris@0: % Give me wordnet synsets labeled `right' of type Noun Chris@0: qt(right_noun, Chris@0: 'SELECT S Chris@0: FROM {S} {L} ; Chris@0: {} Chris@0: WHERE L like "right" Chris@0: USING NAMESPACE Chris@0: wns = '). Chris@0: Chris@0: qt(right_noun_r, Chris@0: 'SELECT S Chris@0: FROM {S} {} ; Chris@0: {L} Chris@0: WHERE L like "right" Chris@0: USING NAMESPACE Chris@0: wns = '). Chris@0: Chris@0: % Give me a WordNet word that belongs to multiple lexical categories Chris@0: qt(multi_lex, Chris@0: 'SELECT DISTINCT L Chris@0: FROM {S1} {L}, Chris@0: {S2} {L}, Chris@0: {S1} {C1}, Chris@0: {S2} {C2}, Chris@0: {C1} {}, Chris@0: {C2} {} Chris@0: WHERE not C1 = C2 Chris@0: USING NAMESPACE Chris@0: wns = '). Chris@0: Chris@0: table(QueryID, Row) :- Chris@0: qt(QueryID, Query), Chris@0: sesame_table_query(Query, Chris@0: Row, Chris@0: []). Chris@0: Chris@0: Chris@0: /******************************* Chris@0: * REPOSITORIES * Chris@0: *******************************/ Chris@0: Chris@0: list_repositories :- Chris@0: ( sesame_current_repository(Id, Atts, []), Chris@0: format('~w ~w~n', [Id, Atts]), Chris@0: fail Chris@0: ; true Chris@0: ). Chris@0: Chris@0: clear :- Chris@0: sesame_clear_repository([]). Chris@0: Chris@0: Chris@0: /******************************* Chris@0: * LOGIN * Chris@0: *******************************/ Chris@0: Chris@0: % login Chris@0: % Chris@0: % Read facts from a file secrets.pl holing lines of the format Chris@0: % Chris@0: %% secret(Host:Port, User, Password). Chris@0: Chris@0: login :- Chris@0: sesame_client:sesame_setting(host(Host)), Chris@0: sesame_client:sesame_setting(port(Port)), Chris@0: read_file_to_terms('secrets.pl', Terms, []), Chris@0: memberchk(secret(Host:Port, User, Password), Terms), Chris@0: login(User, Password). Chris@0: Chris@0: Chris@0: login(User, Password) :- Chris@0: sesame_login(User, Password, []). Chris@0: Chris@0: logout :- Chris@0: sesame_logout([]). Chris@0: Chris@0: Chris@0: /******************************* Chris@0: * UPLOAD * Chris@0: *******************************/ Chris@0: Chris@0: upload(rdfs) :- Chris@0: sesame_upload_file('Ontologies/Base/rdfs.rdfs', Chris@0: [ base_uri('rdfs.rdfs') Chris@0: ]). Chris@0: upload(wine) :- Chris@0: sesame_upload_file('Ontologies/Demo/wine.owl', Chris@0: [ base_uri('wine') Chris@0: ]). Chris@0: upload(File) :- Chris@0: upload(File, []). Chris@0: Chris@0: upload(File, Options) :- Chris@0: absolute_file_name(File, Chris@0: [ extensions([rdf,rdfs]), Chris@0: access(read) Chris@0: ], Chris@0: Path), Chris@0: sesame_upload_file(Path, Options). Chris@0: Chris@0: Chris@0: add(Triples) :- Chris@0: sesame_assert(Triples, []). Chris@0: Chris@0: del(Triple) :- Chris@0: sesame_retract(Triple, []). Chris@0: Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet-20000620.rdfs'). Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_hyponyms-20010201.rdf'). Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_similar-20010201.rdf'). Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_nouns-20010201.rdf'). Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wordnet_glossary-20010201.rdf'). Chris@0: wn_file('/staff/jan/src/Triple20/Ontologies/Public/wnclass.rdfs'). Chris@0: Chris@0: wns :- Chris@0: clear, Chris@0: forall(wn_file(File), Chris@0: ( format(user_error, 'Uploading ~w ...', [File]), Chris@0: sesame_upload_file(File, []), Chris@0: format(user_error, 'done~n', []))). Chris@0: