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: