/* DIG exmaple Filename: dig_server_entailment.pl Author: Zhisheng Huang Last modified: 5 July, 2004 */ :-use_module(library('dig/dig_client')). :-use_module(library('dig/dig_server')). :-use_module(library('dig/dig_process')). :-use_module(library('dig/dig_db')). :-use_module(library('http/thread_httpd')). %% This is an exmaple in which the Prolog DIG server deals with a derivability query %% by reducing it into a satisfiablability query. %deal with the entailment request my_dig_server_processing(RequestData, Answer, _Options):- dig_requestdata_analysis(RequestData, Data, Type), Type=asks, dig_data_analysis(Data, entailment, E, _OtherData), (E = element(entailment, [], E1), ID='NIL';E = element(entailment, [id=ID], E1)), dig_add_elements(E1, not, E2), dig_add_elements(E2, satisfiable, E3), dig_ask(elements(E3), Answer1, [connection(close)]), Answer1 = answer(_Header, AnswerBody), dig_response_analysis(AnswerBody, Type1, _Element,_O), opposite_type(Type1, Type2), dig_standard_response(Type2, ID, Answer), true. %deal with other request my_dig_server_processing(RequestData, Answer, Options):- dig_post(RequestData, Answer, Options). opposite_type(true, false). opposite_type(false, true). :- dig_server_port(Port), set_dig_server_id('SWI-Prolog DIG Server (Derivability Extension)'), http_server(dig_server,[port(Port)]).