Daniel@0: /* Part of DML (Digital Music Laboratory) Daniel@0: Copyright 2014-2015 Samer Abdallah, University of London Daniel@0: Daniel@0: This program is free software; you can redistribute it and/or Daniel@0: modify it under the terms of the GNU General Public License Daniel@0: as published by the Free Software Foundation; either version 2 Daniel@0: of the License, or (at your option) any later version. Daniel@0: Daniel@0: This program is distributed in the hope that it will be useful, Daniel@0: but WITHOUT ANY WARRANTY; without even the implied warranty of Daniel@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Daniel@0: GNU General Public License for more details. Daniel@0: Daniel@0: You should have received a copy of the GNU General Public Daniel@0: License along with this library; if not, write to the Free Software Daniel@0: Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Daniel@0: */ Daniel@0: Daniel@0: :- module(dml_swish, []). Daniel@0: Daniel@0: :- use_module(library(sandbox)). Daniel@0: :- use_module(library(humdrum)). Daniel@0: Daniel@0: :- use_module(swish:library(http/html_write)). Daniel@0: :- use_module(swish:library(pengines)). Daniel@0: :- use_module(swish:library(memo)). Daniel@0: :- use_module(swish:library(rdfutils)). Daniel@0: :- use_module(swish:library(dataset)). Daniel@0: :- use_module(swish:library(dlogic)). Daniel@0: :- use_module(swish:library(pengutils)). Daniel@0: Daniel@0: user:file_search_path(example,dml(examples)). Daniel@0: Daniel@0: sandbox:safe_meta(settings:setting(_,_),[]). Daniel@0: sandbox:safe_primitive(error:has_type(_,_)). Daniel@0: sandbox:safe_primitive(rdf_label:literal_text(_,_)). Daniel@0: sandbox:safe_primitive(humdrum:hum_read(_,_,_)). % could check path here.. Daniel@0: sandbox:safe_primitive(musicbrainz:mb_query(_,_,_,_)). Daniel@0: sandbox:safe_primitive(humdrum_p2r:hum_uri_path(_,_)). Daniel@0: Daniel@0: sandbox:safe_meta('$dicts':eval_dict_function(Func,_,Dict,Out),Goals) :- !, Daniel@0: ( safe_func(Func), Goals=[] Daniel@0: ; is_dict(Dict,Tag), nonvar(Tag), Goals=[call(Tag:Func,Dict,Out)] Daniel@0: ). Daniel@0: safe_func(get(_)). Daniel@0: safe_func(put(_)). Daniel@0: safe_func(put(_,_)).