/************************************************************************* name: resource_interfaces.pl description: GoDiS-AOD Resource interface type definitions authors: Original code (June 2002) by Staffan Larsson (SL) Modifications by SL and David Hjelm (DH) *************************************************************************/ /************************************************************************ HISTORY, started 031104 030321 (DH) - modified dev_query relation to allow for parameters in device queries 031104 - modifed "depends" to include the "bind" and "raise" plan constructs [SL] ?????? (DH) - modified "resolves" relation to include short answer to altq reg. props - modified "combines" relation to include elliptical answer to altq reg. props 050302 (SL) - added device relation dev_queryAll: gets all answers 050621 (SL) - separated out domain help predicates to file "godis_semantics" ***************************************************************************/ :- module(resource_interfaces, [resource_of_type/2, resource_variable_of_type/2, is_resource_type/1, resource_operation/4, resource_relation/2, resource_operation_type/4, resource_relation_type/2, resource_function_type/3, resource_selector_type/3 ]). :- multifile resource_of_type/2, resource_variable_of_type/2, is_resource_type/1, resource_operation/4, resource_relation/2, resource_operation_type/4, resource_relation_type/2, resource_function_type/3, resource_selector_type/3. :- discontiguous resource_of_type/2, resource_variable_of_type/2, is_resource_type/1, resource_operation/4, resource_relation/2, resource_operation_type/4, resource_relation_type/2, resource_function_type/3, resource_selector_type/3. :- use_module(library(lists)). % dummy so resource_operation is defined somewhere resource_operation( dummy, dummy, dummy, dummy ). /*---------------------------------------------------------------------- cfg ----------------------------------------------------------------------*/ is_resource_type( cfg ). resource_variable_of_type( sr_grammar, cfg ). resource_of_type( srg_tvgodis_svenska, cfg ). resource_of_type( srg_tvgodis_svenska2, cfg ). resource_of_type( _, cfg ). resource_relation( rule, [Grammar, R ] ):- Grammar:rule(R). resource_relation_type( rule, [cfg, cfg_production_rule] ). resource_relation( rules, [Grammar, Rs] ):- Grammar:rules(Rs). resource_relation_type( rules, [cfg, set(cfg_production_rule)] ). resource_relation( start_symbol, [Grammar, S] ):- Grammar:start_symbol(S). resource_relation_type( start_symbol, [cfg, cfg_nonterminal ]). /*---------------------------------------------------------------------- lexicon ----------------------------------------------------------------------*/ is_resource_type( lexicon ). resource_variable_of_type( lexicon, lexicon ). resource_of_type( lexicon_travel_english, lexicon ). resource_of_type( lexicon_autoroute_english, lexicon ). resource_of_type( lexicon_travel_svenska, lexicon ). resource_of_type( lexicon_cellphone_svenska, lexicon ). resource_of_type( lexicon_telephone_english, lexicon ). resource_of_type( lexicon_vcr_english, lexicon ). resource_of_type( lexicon_vcr_svenska, lexicon ). resource_of_type( lexicon_telvcr_english, lexicon ). resource_of_type( lexicon_telvcr_svenska, lexicon ). resource_of_type( lexicon_telvcrlogin_english, lexicon ). resource_of_type( lexicon_telvcrlogin_svenska, lexicon ). resource_of_type( lexicon_agenda_english, lexicon ). resource_of_type( _, lexicon ). resource_relation( input_form, [Lexicon, Phrase, Move] ) :- Lexicon : input_form( Phrase, Move ). resource_relation_type( input_form, [ lexicon, string, dmove ] ). resource_relation( output_form, [Lexicon, Phrase, Move] ) :- Lexicon : output_form( Phrase, Move ). resource_relation_type( output_form, [ lexicon, string, dmove ] ). resource_relation( output_formcom, [Lexicon,Move,set(Com),Phrase] ):- Lexicon : output_form(Move,Com,Phrase). resource_relation_type( output_form, [ lexicon,dmove,set(prop),string ] ). resource_relation( yn_answer, [Lexicon, A] ) :- Lexicon : yn_answer( A ). resource_relation_type( yn_answer, [ lexicon, answer ] ). /*---------------------------------------------------------------------- domain ----------------------------------------------------------------------*/ :- ensure_loaded(library(godis_semantics)). is_resource_type( domain ). resource_variable_of_type( domain, domain ). resource_of_type( travel, domain ). resource_of_type( autoroute, domain ). resource_of_type( telephone, domain ). resource_of_type( vcr, domain ). resource_of_type( telvcr, domain ). resource_of_type( telvcrlogin, domain ). resource_of_type( tvgodis, domain ). resource_of_type( agenda, domain). resource_of_type( _, domain). resource_relation( relevant, [Domain, Answer, Query ] ) :- relevant_answer( Query, Answer, Domain ). resource_relation_type( relevant_answer, [domain, question, answer] ). resource_relation( resolves, [Domain, Answer, Query ] ) :- resolves( Query, Answer, Domain ). resource_relation_type( resolves, [domain, question, answer] ). resource_relation( plan, [Domain, Task,stackset(Plan)] ) :- Domain : plan( Task, Plan ). resource_relation_type( plan, [ ] ). resource_relation( combine, [Domain, Q, A, P] ):- combine(Q, A, P, Domain ). resource_relation_type( combine, [domain, question, answer, prop] ). resource_relation( abstract, [Domain, A, P, Q] ):- abstract( A, P, Q, Domain ). resource_relation_type( abstract, [domain, answer, prop, question] ). resource_relation( incompatible, [Domain, P1, P2] ):- incompatible( P1, P2, Domain ). resource_relation_type( incompatible, [domain, prop, prop] ). resource_relation( proposition, [Domain, P] ):- Domain : sort_restr( P ). resource_relation_type( proposition, [domain, prop] ). resource_relation( question, [Domain, Q] ):- Domain : sort_restr( issue(Q) ). resource_relation_type( question, [domain, question] ). resource_relation( issue, [Domain, Q] ):- Domain : sort_restr( issue(Q) ). resource_relation_type( issue, [domain, question] ). resource_relation( action, [Domain, A] ):- Domain : sort_restr( action(A) ). resource_relation_type( action, [domain, action] ). %Q1 depends on Q % modified to include "bind" and "raise" [SL031104] resource_relation( depends, [Domain, Q1, Q] ):- Domain : plan( Q1, Plan ), ( member( findout( Q ), Plan ); ( member( bind( Q ), Plan ); member( raise( Q ), Plan ) ) ). resource_relation( depends, [Domain, Q1, Q] ):- Domain : depends( Q1, Q ). resource_relation_type( depends, [domain, question, question] ). % default question resource_relation( default_question, [Domain, Q] ):- Domain : default_question( Q ). resource_relation_type( default_question, [domain, question] ). % actions resource_relation( postcond, [_Domain, Action, done(Action)] ). resource_relation( postcond, [Domain, Action, Prop] ):- Domain : postcond( Action, Prop ). resource_relation_type( postcond, [domain, action, prop ] ). resource_relation( valid_parameter, [Domain, Prop] ) :- Domain : valid_parameter( Prop ). resource_relation_type( valid_parameter, [domain, prop ] ). resource_relation( dominates, [Domain, A1, A2] ) :- dominates( Domain, A1, A2). resource_relation_type( dominates, [domain, action, action ] ). /*---------------------------------------------------------------------- database ----------------------------------------------------------------------*/ is_resource_type( database ). resource_variable_of_type( database, database ). resource_of_type( travel, database ). resource_of_type( autoroute, database ). resource_relation( consultDB, [Database, Query, PropSet, Answer] ) :- Database : consultDB( Query, PropSet, Answer ), !. %resource_relation( consultDB, [_, X^Q, _, notexist(Q) ] ). resource_relation( consultDB, [_, X^Q, _, notexist(X,Q) ] ). resource_relation( consultDB, [_, Q, _, unknown(Q) ] ). resource_relation_type( consultDB, [database, question, set(prop), answer]). resource_relation( consultDBx, [Database, Query, PropSet, AnswerSet] ) :- Database : consultDBx( Query, PropSet, AnswerSet ), !. resource_relation( consultDBx, [_, X^Q, _, set([notexist(X,Q)]) ] ). resource_relation( consultDBx, [_, Q, _, set([unknown(Q)])] ). resource_relation_type( consultDB, [database, question, set(prop), answer]). resource_relation( validDBparameter, [Database, Prop ] ) :- Database : validDBparameter( Prop ), !. resource_relation_type( validDBparameter, [database, prop]). /*---------------------------------------------------------------------- device ----------------------------------------------------------------------*/ is_resource_type( upnp_dev ). % note: "devices" is a record containing devices % HACK 021818 %resource_variable_of_type( devices, record([vcr:upnp_dev, telephone:upnp_dev])). resource_variable_of_type( devices, record([])). % findall( Var:upnp_dev, of_type( Var, upnp_dev ), R ). % note: device_vcr etc. refers to actual devices ("tokens"), not types of_type( device_vcr, upnp_dev ). of_type( device_telephone, upnp_dev ). of_type( device_telvcr, upnp_dev ). of_type( device_telvcrlogin, upnp_dev ). of_type( device_agendatalk, upnp_dev ). resource_relation( dev_get, [ Dev, Var, VarVal ] ) :- Dev : dev_get( Var, Val ), VarVal =.. [ Var, Val ]. resource_relation_type( dev_get, [device, _, _]). % resource_relation( dev_query, [ Dev, Query, Answer ] ) :- % Dev : dev_query( Query, Answer ). % resource_relation_type( dev_query, [device, _, answer]). %DH 21/3-2003 - to allow for parameters in device queries resource_relation( dev_query, [Dev, Query, set(PropList), Answer ] ) :- Dev : dev_query( Query, PropList, Answer ). resource_relation_type( dev_query, [device, _ , set(prop), answer]). % SL 050302 - get all answers resource_relation( dev_queryAll, [Dev, Query, set(PropList), set(AnswerList) ] ) :- Dev : dev_queryAll( Query, PropList, AnswerList ). resource_relation_type( dev_query, [device, _ , set(prop), set(prop)]). resource_relation( valid_parameter, [ Dev, Prop] ) :- Dev : valid_parameter( Prop ). resource_relation_type( valid_parameter, [device, prop ]). resource_operation( dev_set, Dev, [ Var, Val ], Dev ) :- Dev : dev_set( Var, Val ). resource_operation_type( dev_set, device, [ _, _], device ). resource_operation( dev_do, Dev, [ Action, set(PropList) ], Dev ) :- Dev : dev_do( Action, PropList ). resource_operation_type( dev_do, device, [ action, set(prop) ], device ). /*---------------------------------------------------------------------- asr_grammar ----------------------------------------------------------------------*/ is_resource_type( asr_grammar ). resource_variable_of_type( asr_grammar, asr_grammar ). resource_of_type( asrg_vcr_english, asr_grammar ). resource_of_type( asrg_travel_english, asr_grammar ). resource_of_type( asrg_telvcr_english, asr_grammar ). resource_of_type( asrg_telvcrlogin_english, asr_grammar ). resource_of_type( asrg_telvcr_svenska, asr_grammar ). resource_of_type( asrg_telvcrlogin_svenska, asr_grammar ). resource_of_type( asrg_agenda_english, asr_grammar ). resource_relation( language, [Grammar, L] ):- Grammar:language(L). resource_of_type( language, [asr_grammar, atom] ).