1:- module(search_util, 2 [ 3 % must be exposed so it can be expanded in query rewrites 4 label_or_synonym_pred_hook/1, 5 6 lmatch/2, 7 8 psearch/5, 9 psearch/4, 10 psearch/3, 11 12 tsearch/6, 13 tsearch/5, 14 tsearch/4, 15 tsearch/3, 16 tsearch/2, 17 18 lsearch/2, 19 lsearch/3, 20 lsearch/4, 21 lsearch/5 22 ]). 23 24:- use_module(library(semweb/rdf11)). 25:- use_module(library(semweb/rdfs)). 26:- use_module(library(sparqlprog/owl_util)). 27%:- use_module(library(sparqlprog/ontologies/owl), [label/2]). 28:- use_module(library(sparqlprog/emulate_builtins)).
NOTE: this will NOT do a conversion to STR in SPARQL; e.g SELECT ?x WHERE {FILTER (regex(?v0,"^cell$","i")) . ?x http://www.w3.org/2000/01/rdf-schema#label ?v0}
40lmatch(P,C) :- {like(L,P)},rdf(C,rdfs:label,L).
NOTE: this will do a conversion to STR in SPARQL; e.g SELECT ?x WHERE {?x http://www.w3.org/2000/01/rdf-schema#label ?v0 . FILTER (regex(STR(?v0),"^cell$","i"))}
49lsearch(P,C,L,F,G) :- rdf(C,rdfs:label,L,G),regex(str(L),P,F). 50lsearch(P,C,L,F) :- label(C,L),regex(str(L),P,F). 51lsearch(P,C,L) :- label(C,L),regex(str(L),P,"i"). 52lsearch(P,C) :- label(C,L),regex(str(L),P,"i").
57psearch(P,C,R,L,F) :- rdf(C,R,L),regex(str(L),P,F). 58psearch(P,C,R,L) :- rdf(C,R,L),regex(str(L),P,"i"). 59psearch(P,C,R) :- rdf(C,R,L),regex(str(L),P,"i").
64tsearch(P,C,Pred,L,F,G) :- label_or_synonym_pred_hook(Pred), rdf(C,Pred,L,G),regex(str(L),P,F). 65tsearch(P,C,Pred,L,F) :- tsearch(P,C,Pred,L,F,_). 66tsearch(P,C,Pred,L) :- tsearch(P,C,Pred,L,"i",_). 67tsearch(P,C,Pred) :- tsearch(P,C,Pred,_,"i",_). 68tsearch(P,C) :- tsearch(P,C,_,_,"i",_). 69 70:- rdf_meta label_or_synonym_pred_hook(r). 71:- multifile label_or_synonym_pred_hook/1. 72label_or_synonym_pred_hook(rdfs:label). 73label_or_synonym_pred_hook('http://www.geneontology.org/formats/oboInOwl#hasRelatedSynonym'). 74label_or_synonym_pred_hook('http://www.geneontology.org/formats/oboInOwl#hasNarrowSynonym'). 75label_or_synonym_pred_hook('http://www.geneontology.org/formats/oboInOwl#hasBroadSynonym'). 76label_or_synonym_pred_hook('http://www.geneontology.org/formats/oboInOwl#hasExactSynonym')