/* DAML XSB interpretation Author: Youyong Zou. UMBC. Date: 05/01/2001 Version: 0.3 Reference to 1. "An Axiomatic Semantics for RDF, RDF-S and DAML+OIL " by Richard Fikes and Deborah L Mcguinness 2. "A Logical Interpretation of RDF" By Wolfram Conen abd Reinhold Klapsing 3. SiRPAC */ /* ---------------RDF---------------------- */ /* Ax1 : type */ type(I,C) :- triple(I, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", C). /* Ax2 : no-repeats-list */ /* change a List(with duplicate) to a Set(without duplicate) */ no-repeats-list(L, S) :- no-repeat(L, S0), S = S0. no-repeat([], S) :- end-list(S). no-repeat([H|T], S) :- memberchk(H, S), !, no-repeat(T, S). end_list([]) :- !. end_list([_|S]) :- close_list(S). memberchk(X,[X|_]) :- !. memberchk(X,[_|L]) :- memberchk(X,L). class(P) :- type(P, "http://www.w3.org/2000/01/rdf-schema#Class"). resource(P) :- type(P, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"). property(P) :- type(P, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"). statement(P) :- type(P, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"). /*Ax3 */ class("http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"). /* Ax4 */ resource(P) :- property(P). /*Ax5 */ property(P) :- triple(_,P,_). /*Ax6 */ resource(X) :- class(X). /* Ax7 */ disjoint(A,B) :- not (type(X,A), type(X,B)). disjoint("http://www.w3.org/2000/01/rdf-schema#Class", "http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"). /* Ax8 */ functionalProperty(FP):- property(FP), triple(S, FP, V1), not(triple(S, FP, V2) , not(V1=V2)). /* Ax9 */ class("http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal"). /* Ax10 */ resource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"). /* Ax11 */ reifies(SS, S,P,O) :- triple(SS, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement") , triple(SS, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Subject",S), triple(SS, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Predicate", P), triple(SS, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Object", O). reifies_fact(SS, S,P,O) :- reifies(SS, S,P,O), statement(S,P,O). /* Ax12 */ resource(C) :- container(C). /* Ax13 */ is_list(C) :- container(C). /* Ax14 */ container(C) :- type(C, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"). container(C) :- type(C, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq"). container(C) :- type(C, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt"). /*Ax15 */ property(P) :- containerMembershipProperty(P). /* Ax16 */ property("http://www.w3.org/1999/02/22-rdf-syntax-ns#Type"). /* Ax17 */ resource(R) :- type(R,_). class(C) :- type(_,C). /* Ax18 */ functionalProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#Subject"). /* Ax19 */ statement(ST) :- triple(ST, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Subject", _). resource(SB) :- triple(_, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Subject", SB). /* Ax20 */ functionalProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#Predicate"). /* Ax21 */ statement(ST) :- triple(ST, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Predicate", _). property(SP) :- triple(_, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Predicate", SP). /* Ax22 */ functionalProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#Object"). /* Ax23 */ statement(ST) :- triple(ST, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Oject", _). /* O is resource or Literal */ /* Ax24 */ property("http://www.w3.org/1999/02/22-rdf-syntax-ns#Value"). /* Ax25 */ resource(ST) :- triple(ST, "http://www.w3.org/1999/02/22-rdf-syntax-ns#Value", _). /* O is resource or Literal */ /* Ax26 */ property("http://www.w3.org/1999/02/22-rdf-syntax-ns#_1"). /* Ax27 */ type(C,"http://www.w3.org/1999/02/22-rdf-syntax-ns#Collection") :- triple(C, "http://www.w3.org/1999/02/22-rdf-syntax-ns#_1", O). /*--------------------------RDFS------------------------------------ */ /* Ax28 */ subClassOf(C1,C2) :- triple(C1, "http://www.w3.org/2000/01/rdf-schema#subClassOf", C2). subClassOf("http://www.w3.org/2000/01/rdf-schema#ConstraintResource", "http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"). constraintResource(CP) :- type(CP, "http://www.w3.org/2000/01/rdf-schema#ConstraintResource"). /* Ax29 */ constraintProperty(CP) :- type(CP, "http://www.w3.org/2000/01/rdf-schema#ConstraintProperty"). constraintProperty(CP) :- property(CP), constraintResource(CP). /* Ax30 */ /* nonNegativeInteger(N) :- integer(N). */ /* Ax31 */ property("http://www.w3.org/2000/01/rdf-schema#subClassOf"). /* Ax32 */ type(A, CSuper) :- subClassOf(Super, CSuper), type(A, Super). /* Ax33 */ property("http://www.w3.org/2000/01/rdf-schema#subPropertyOf"). subPropertyOf(A,B) :- triple(A, "http://www.w3.org/2000/01/rdf-schema#subPropertyOf",B). /* Ax34 */ triple(O,SuperP, V ) :- subPropertyOf(SubP, SuperP), triple(O,SubP,V). /* Ax35 */ property("http://www.w3.org/2000/01/rdf-schema#seeAlso"). /* Ax36 */ domain(I,P) :- triple(P,"http://www.w3.org/2000/01/rdf-schema#domain",C), type(I,C). domain("http://www.w3.org/2000/01/rdf-schema#seeAlso", "http://www.w3.org/2000/01/rdf-schema#Resource"). /* Ax37 */ is_range(O,P) :- triple(P, "http://www.w3.org/2000/01/rdf-schema#range", O). range(O,P) :- triple(_,P,O), type(O,C), is_range(C,P). range("http://www.w3.org/2000/01/rdf-schema#seeAlso", "http://www.w3.org/2000/01/rdf-schema#Resource"). /* Ax38 */ subPropertyOf("http://www.w3.org/2000/01/rdf-schema#isDefinedBy", "http://www.w3.org/2000/01/rdf-schema#seeAlso"). /* Ax39 */ property("http://www.w3.org/2000/01/rdf-schema#Comment"). /* Ax40 */ range("http://www.w3.org/2000/01/rdf-schema#Comment", "http://www.w3.org/2000/01/rdf-schema#Literal"). /* Ax41 */ property("http://www.w3.org/2000/01/rdf-schema#Label"). /* Ax42 */ range("http://www.w3.org/2000/01/rdf-schema#Label", "http://www.w3.org/2000/01/rdf-schema#Literal"). /* Ax43 */ subClassOf("http://www.w3.org/2000/01/rdf-schema#ConstraintProperty", "http://www.w3.org/2000/01/rdf-schema#Property"). /* Ax44 */ constraintProperty("http://www.w3.org/2000/01/rdf-schema#Range"). /* Ax45 */ functionalProperty("http://www.w3.org/2000/01/rdf-schema#Range"). /* Ax46 */ type(Y,R) :- range(P,R) , triple(_,P,Y). /* Th1 */ domain("http://www.w3.org/2000/01/rdf-schema#Range", "http://www.w3.org/2000/01/rdf-schema#Property"). /* Th2 */ range("http://www.w3.org/2000/01/rdf-schema#Range", "http://www.w3.org/2000/01/rdf-schema#Class"). /* Ax47 */ constraintProperty("http://www.w3.org/2000/01/rdf-schema#Domain"). /* Ax48 */ type(X,D) :- domain(P,D) ,triple(X,P,_). /* Th3 */ domain("http://www.w3.org/2000/01/rdf-schema#Domain", "http://www.w3.org/2000/01/rdf-schema#Property"). range("http://www.w3.org/2000/01/rdf-schema#Domain", "http://www.w3.org/2000/01/rdf-schema#Class"). /*--------------------------DAML------------------------------------ */ /* Ax 49 */ subClassOf("http://www.daml.org/2001/03/daml+oil#Class", "http://www.w3.org/2000/01/rdf-schema#Class"). damlclass(P) :- type(P, "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax50 */ subClassOf("http://www.daml.org/2001/03/daml+oil#Dadatype", "http://www.w3.org/2000/01/rdf-schema#Class"). /* Ax51 */ subClassOf("http://www.daml.org/2001/03/daml+oil#Thing", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax52 */ /* same as Ax85 complementOf(A,B) :- triple(A, "http://www.daml.org/2001/03/daml+oil#complementOf",B). */ /* Ax53 */ complementOf("http://www.daml.org/2001/03/daml+oil#Thing", "http://www.daml.org/2001/03/daml+oil#Nothing"). /* Ax54 */ damlclass("http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax55 */ damlclass("http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax56 */ damlclass("http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Ax57 */ subClassOf("http://www.daml.org/2001/03/daml+oil#AbstractProperty", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax58 */ damlclass("http://www.daml.org/2001/03/daml+oil#DadatypeProperty"). /* Ax60 */ damlclass("http://www.daml.org/2001/03/daml+oil#TransitiveProperty"). /* Ax61 */ triple(X,P,Z) :- type(P,"http://www.daml.org/2001/03/daml+oil#TransitiveProperty"), triple(X,P,Y), triple(Y,P,Z). /* Th5 */ subClassOf("http://www.daml.org/2001/03/daml+oil#TransitiveProperty", "http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Ax62 */ damlclass("http://www.daml.org/2001/03/daml+oil#UniqueProperty"). /* Ax63 */ type(P, "http://www.daml.org/2001/03/daml+oil#UniqueProperty") :- not (triple(X,P,Y), triple(X,P,Z), not(Y is Z)). /* th6 */ subClassOf("http://www.daml.org/2001/03/daml+oil#UniqueProperty", "http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Ax64 */ damlclass("http://www.daml.org/2001/03/daml+oil#UnambiguousProperty"). /* Ax65 */ type(P, "http://www.daml.org/2001/03/daml+oil#UnambiguousProperty") :- not (triple(X,P,V), triple(Y,P,V), not(X is Y)). /* th7 */ subClassOf("http://www.daml.org/2001/03/daml+oil#UnambiguousProperty", "http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Ax66 */ subClassOf("http://www.daml.org/2001/03/daml+oil#List", "http://www.daml.org/2001/03/daml+oil#Seq"). /*Ax 67 */ damlclass("http://www.daml.org/2001/03/daml+oil#Ontology"). /*Ax 68 */ property("http://www.daml.org/2001/03/daml+oil#equivalentTo"). /*Ax 69 */ same(X,Y) :- triple(X, "http://www.daml.org/2001/03/daml+oil#equivalentTo", Y). same(X,Y) :- X is Y. /*Ax 70 */ subPropertyOf("http://www.daml.org/2001/03/daml+oil#sameClassAs", "http://www.daml.org/2001/03/daml+oil#equivalentTo"). /* Ax71 */ subPropertyOf("http://www.daml.org/2001/03/daml+oil#sameClassAs", "http://www.daml.org/2001/03/daml+oil#subClassOf"). /* Ax72 */ domain("http://www.daml.org/2001/03/daml+oil#sameClassAs", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax73 */ range("http://www.daml.org/2001/03/daml+oil#sameClassAs", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax74 */ subPropertyOf("http://www.daml.org/2001/03/daml+oil#samePropertyAs", "http://www.daml.org/2001/03/daml+oil#equivalentTo"). /* Ax75 */ subPropertyOf("http://www.daml.org/2001/03/daml+oil#samePropertyAs", "http://www.daml.org/2001/03/daml+oil#subPropertyOf"). /* Ax 76 */ property("http://www.daml.org/2001/03/daml+oil#disjointWith"). /* Ax77 */ disjointWith(C1,C2) :- triple(C1, "http://www.daml.org/2001/03/daml+oil#disjointWith",C2), not(type(X, C1), type(X,C2)). /* Th8 */ domain("http://www.daml.org/2001/03/daml+oil#disjointWith", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax78 */ property("http://www.daml.org/2001/03/daml+oil#unionOf"). /* Ax79 */ type(X,C2) :- triple(C1, "http://www.daml.org/2001/03/daml+oil#unionOf",L), item(C2,L), type(X,C1). /* th10*/ domain("http://www.daml.org/2001/03/daml+oil#unionOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th11 */ range("http://www.daml.org/2001/03/daml+oil#unionOf", "http://www.daml.org/2001/03/daml+oil#List"). /* Ax80 */ property("http://www.daml.org/2001/03/daml+oil#disjointUnionOf"). /* Ax81 */ type(L, "http://www.daml.org/2001/03/daml+oil#Disjoint") :- triple(_, "http://www.daml.org/2001/03/daml+oil#disjointUnionOf", L). unionOf(C,L) :- triple(C, "http://www.daml.org/2001/03/daml+oil#disjointUnionOf", L). /* th12*/ domain("http://www.daml.org/2001/03/daml+oil#disjointUnionOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th13 */ range("http://www.daml.org/2001/03/daml+oil#disjointUnionOf", "http://www.daml.org/2001/03/daml+oil#Disjoint"). /* Ax82 */ property("http://www.daml.org/2001/03/daml+oil#intersectionOf"). /* Ax83 */ type(X,C2) :- triple(C1, "http://www.daml.org/2001/03/daml+oil#intersectionOf",L), item(C2,L), type(X,C1). /* th14*/ domain("http://www.daml.org/2001/03/daml+oil#intersectionOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th15 */ range("http://www.daml.org/2001/03/daml+oil#intersectionOf", "http://www.daml.org/2001/03/daml+oil#List"). /* Ax84 */ property("http://www.daml.org/2001/03/daml+oil#complementOf"). /* Ax85 */ complementOf(C1,C2) :- triple(C1, "http://www.daml.org/2001/03/daml+oil#complementOf",C2), not( not(type(X,C1)), not(type(X,C2))). /* th16*/ domain("http://www.daml.org/2001/03/daml+oil#complementOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th17 */ range("http://www.daml.org/2001/03/daml+oil#complementOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th18 */ /* same as Ax53 */ /* Ax86 */ property("http://www.daml.org/2001/03/daml+oil#oneOf"). /* Ax87 */ item(X,L) :- triple(C,"http://www.daml.org/2001/03/daml+oil#oneOf",L), type(X,C). /* Th19 */ domain("http://www.daml.org/2001/03/daml+oil#oneOf", "http://www.daml.org/2001/03/daml+oil#Class"). /* th20 */ range("http://www.daml.org/2001/03/daml+oil#oneOf", "http://www.daml.org/2001/03/daml+oil#List"). /* Ax88 */ property("http://www.daml.org/2001/03/daml+oil#onProperty"). /* what onProperty meaning ? */ /* Ax89 */ domain("http://www.daml.org/2001/03/daml+oil#onProperty", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax90 */ range("http://www.daml.org/2001/03/daml+oil#onProperty", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax91 */ property("http://www.daml.org/2001/03/daml+oil#toClass"). /* Ax92 */ domain("http://www.daml.org/2001/03/daml+oil#toClass", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax93 */ range("http://www.daml.org/2001/03/daml+oil#toClass", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax94 */ type(J,C) :- triple(R,"http://www.daml.org/2001/03/daml+oil#onProperty",P), triple(R,"http://www.daml.org/2001/03/daml+oil#toClass",C), triple(I,P,J), type(I,R). /* Ax95 */ property("http://www.daml.org/2001/03/daml+oil#hasValue"). /* Ax96 */ domain("http://www.daml.org/2001/03/daml+oil#hasValue", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* range of hasValue ?..... */ /* Ax97 */ triple(I,P,V) :- triple(R,"http://www.daml.org/2001/03/daml+oil#onProperty",P), triple(R,"http://www.daml.org/2001/03/daml+oil#hasValue",V), type(I,R). /* Ax98 */ property("http://www.daml.org/2001/03/daml+oil#hasClass"). /* Ax99 */ domain("http://www.daml.org/2001/03/daml+oil#hasClass", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax100 */ range("http://www.daml.org/2001/03/daml+oil#hasClass", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax101 */ triple(I,P,J) :- triple(R,"http://www.daml.org/2001/03/daml+oil#onProperty",P), triple(R,"http://www.daml.org/2001/03/daml+oil#hasClass",C), type(I,R), type(J,C). /* Ax102 */ property("http://www.daml.org/2001/03/daml+oil#minCardinality"). /* Ax103 */ domain("http://www.daml.org/2001/03/daml+oil#minCardinality", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax104 */ range("http://www.daml.org/2001/03/daml+oil#minCardinality", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax105 */ /* add violate check here */ /* Ax106 */ property("http://www.daml.org/2001/03/daml+oil#maxCardinality"). /* Ax107 */ domain("http://www.daml.org/2001/03/daml+oil#maxCardinality", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax108 */ range("http://www.daml.org/2001/03/daml+oil#maxCardinality", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax109 */ /* add violate check here */ /* Ax110 */ property("http://www.daml.org/2001/03/daml+oil#cardinality"). /* Ax111 */ domain("http://www.daml.org/2001/03/daml+oil#cardinality", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax112 */ range("http://www.daml.org/2001/03/daml+oil#cardinality", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax113 */ /* add violate check here */ /* Ax114 */ property("http://www.daml.org/2001/03/daml+oil#hasClassQ"). /* Ax115 */ domain("http://www.daml.org/2001/03/daml+oil#hasClassQ", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax116 */ range("http://www.daml.org/2001/03/daml+oil#hasClassQ", "http://www.daml.org/2001/03/daml+oil#Class"). /* Ax117 */ type("http://www.daml.org/2001/03/daml+oil#minCardinalityQ", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax118 */ domain("http://www.daml.org/2001/03/daml+oil#minCardinalityQ", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax119 */ range("http://www.daml.org/2001/03/daml+oil#minCardinalityQ", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax120 */ /* add violate check here */ /* Ax121 */ type("http://www.daml.org/2001/03/daml+oil#maxCardinalityQ", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax122 */ domain("http://www.daml.org/2001/03/daml+oil#maxCardinalityQ", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax123 */ range("http://www.daml.org/2001/03/daml+oil#maxCardinalityQ", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax124 */ /* add violate check here */ /* Ax125 */ type("http://www.daml.org/2001/03/daml+oil#cardinalityQ", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax126 */ domain("http://www.daml.org/2001/03/daml+oil#cardinalityQ", "http://www.daml.org/2001/03/daml+oil#Restriction"). /* Ax127 */ range("http://www.daml.org/2001/03/daml+oil#cardinalityQ", "http://www.daml.org/2001/03/daml+oil#NonNegativeInteger"). /* Ax128 */ /* add violate check here */ /* Ax129 */ type("http://www.daml.org/2001/03/daml+oil#inverstOf", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax130 */ triple(X1,P2,X2) :- triple(P1,"http://www.daml.org/2001/03/daml+oil#inverstOf",P2 ), triple(X1,P1,X2 ). triple(P1,"http://www.daml.org/2001/03/daml+oil#inverstOf",P2 ) :- triple(P2,"http://www.daml.org/2001/03/daml+oil#inverstOf",P1 ). /* Th21 */ domain("http://www.daml.org/2001/03/daml+oil#inverstOf", "http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Th22 */ range("http://www.daml.org/2001/03/daml+oil#inverstOf", "http://www.daml.org/2001/03/daml+oil#AbstractProperty"). /* Ax131 */ type("http://www.daml.org/2001/03/daml+oil#first", "http://www.daml.org/2001/03/daml+oil#FunctionalProperty"). /* Ax132 */ triple(L,"http://www.daml.org/2001/03/daml+oil#_1", X) :- triple(L, "http://www.daml.org/2001/03/daml+oil#first",X). /* Ax133 */ type("http://www.daml.org/2001/03/daml+oil#rest", "http://www.daml.org/2001/03/daml+oil#FunctionalProperty"). /* Ax134 */ /* add list operation here */ rest(X,L) :- triple(L, "http://www.daml.org/2001/03/daml+oil#rest",X). /* Ax135 */ type("http://www.daml.org/2001/03/daml+oil#item", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax136 */ /* add list operation here */ item(X,L) :- triple(L, "http://www.daml.org/2001/03/daml+oil#item",X). item(X,L) :- triple(L, "http://www.daml.org/2001/03/daml+oil#first",X). item(X,L) :- triple(L, "http://www.daml.org/2001/03/daml+oil#rest",R), item(X,R). /* Ax 137 */ type("http://www.daml.org/2001/03/daml+oil#versionInfo", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax138 */ type("http://www.daml.org/2001/03/daml+oil#imports", "http://www.daml.org/2001/03/daml+oil#Property"). /* Ax139 */ type("http://www.daml.org/2001/03/daml+oil#nil", "http://www.daml.org/2001/03/daml+oil#List"). /* Ax140 */ nil(X) :- not(triple("http://www.daml.org/2001/03/daml+oil#nil", "http://www.daml.org/2001/03/daml+oil#nil",X)).