/** This is an example that shows how to convert ACE sentences into OWL/SWRL. A simple Prolog commandline interface ('cli') is provided. @author Kaarel Kaljurand @version 2010-11-14 */ % We point to the directory where APE modules and the lexicons are located. :- assert(user:file_search_path(ape, '../prolog')). :- use_module(ape('parser/ace_to_drs'), [ acetext_to_drs/5 ]). :- use_module(ape('utils/drs_to_ascii'), [ drs_to_ascii/2 ]). :- use_module(ape('utils/owlswrl/drs_to_owlswrl'), [ drs_to_owlswrl/4 ]). % Import the lexicons :- style_check(-singleton). :- style_check(-discontiguous). :- use_module(ape('lexicon/clex')). :- use_module(ape('lexicon/ulex')). :- style_check(+discontiguous). :- style_check(+singleton). :- use_module(ape('logger/error_logger'), [ clear_messages/0, get_messages/1 ]). :- use_module(ape('utils/owlswrl/owlswrl_to_fss'), [ owlswrl_to_fss/1 ]). :- use_module(ape('utils/owlswrl/owlswrl_to_xml'), [ owlswrl_to_xml/2 ]). t(AceText, Owl) :- clear_messages, acetext_to_drs(AceText, _, _, Drs, _), drs_to_owlswrl(Drs, test, 'Ontology from an ACE text.', Owl). t(AceText) :- clear_messages, acetext_to_drs(AceText, _, _, Drs, _), drs_to_ascii(Drs, DrsAscii), format("~w~n", [DrsAscii]), drs_to_owlswrl(Drs, test, 'Ontology from an ACE text.', Owl), get_messages(Messages), format("Messages: ~w~n~n", [Messages]), owlswrl_to_fss(Owl), nl, owlswrl_to_xml(Owl, XML), xml_write(user, XML, [layout(true), indent(0), header(false), net(true)]), format("~n~n"), !. t(_) :- format("Something failed.~n~n"). % Commandline interface cli :- clear_messages, prompt(Old, 'ACE to OWL> '), read_text_from_commandline(AceText), prompt(_, Old), t(AceText), cli. read_text_from_commandline([C | R]) :- get0(C), line_continues(C), !, read_text_from_commandline(R). read_text_from_commandline([]). multiline(false). line_continues(C) :- C \== 10, C \== -1, !. line_continues(C) :- multiline(true), C \== -1.