% --------------------------------------------- % RDF PlainLiteral plugin for Eye -- Jos De Roo % --------------------------------------------- % functions according to http://www.w3.org/TR/rdf-plain-literal/#Functions_on__rdf:PlainLiteral_Data_Values ''([literal(A,void)],literal(A,void)) :- !. ''([literal(A,void),literal(B,void)],literal(A,lang(C))) :- downcase_string(B,D), atom_codes(C,D). ''([literal(A,void)],literal(A,void)) :- !. ''([literal(A,lang(_))],literal(A,void)). ''([literal(_,void)],literal("",void)) :- !. ''([literal(_,lang(A))],literal(B,void)) :- atom_codes(A,B). % @@partial implementation: no collation ''([literal(A,void),literal(C,void)],D) :- !, (A @< C -> D = -1; (A == C -> D = 0; (A @> C -> D = 1))). ''([literal(A,lang(B)),literal(C,lang(B))],D) :- (A @< C -> D = -1; (A == C -> D = 0; (A @> C -> D = 1))). ''([literal(A,void)],C) :- !, length(A,C). ''([literal(A,lang(B))],C) :- length(A,C). % @@partial implementation: no false results ''([literal(A,lang(B)),literal(C,void)],true) :- A \= "", atom_codes(B,D), regexp_wildcard(C,E), append("^",E,F), regexp(F,D,[nocase]). regexp_wildcard([],[]) :- !. regexp_wildcard([0'*|A],[0'.,0'*|B]) :- !, regexp_wildcard(A,B). regexp_wildcard([A|B],[A|C]) :- regexp_wildcard(B,C).