ACTION t01 SELECT ?p WHERE { ?p a owl:FunctionalProperty } RULE Forall ?y2 ?x ?y1 ( ?y1[owl:sameAs->?y2] :- And( ?x[#p->?y1] ?x[#p->?y2] )) ACTION t02 SELECT ?p WHERE { ?p a owl:InverseFunctionalProperty } RULE Forall ?x1 ?x2 ?y ( ?x1[owl:sameAs->?x2] :- And( ?x1[#p->?y] ?x2[#p->?y] )) ACTION t03 SELECT ?p WHERE { ?p a owl:ReflexiveProperty } RULE Forall ?x ?z ?y ( ?x[#p->?x] :- And( ?x[?y->?z] )) AND Forall ?x ?z ?y ( ?y[#p->?y] :- And( ?x[?y->?z] )) AND Forall ?x ?z ?y ( ?z[#p->?z] :- And( ?x[?y->?z] )) ACTION t04 SELECT ?p WHERE { ?p a owl:IrreflexiveProperty } RULE Forall ?x ( rif:error("inconsistent") :- And( ?x[#p->?x] )) ACTION t05 SELECT ?p WHERE { ?p a owl:SymmetricProperty } RULE Forall ?x ?y ( ?y[#p->?x] :- And( ?x[#p->?y] )) ACTION t06 SELECT ?p WHERE { ?p a owl:AsymmetricProperty } RULE Forall ?x ?y ( rif:error("inconsistent") :- And( ?x[#p->?y] ?y[#p->?x] )) ACTION t07 SELECT ?p WHERE { ?p a owl:TransitiveProperty } RULE Forall ?x ?z ?y ( ?x[#p->?z] :- And( ?x[#p->?y] ?y[#p->?z] )) ACTION t08 SELECT ?p1 ?p2 WHERE { ?p1 rdfs:subPropertyOf ?p2 } RULE Forall ?x ?y ( ?x[#p2->?y] :- And( ?x[#p1->?y] )) ACTION t09 SELECT ?p1 ?p2 WHERE { ?p1 owl:equivalentProperty ?p2 } RULE Forall ?x ?y ( ?x[#p2->?y] :- And( ?x[#p1->?y] )) AND Forall ?x ?y ( ?x[#p1->?y] :- And( ?x[#p2->?y] )) ACTION t10 SELECT ?p1 ?p2 WHERE { ?p1 owl:propertyDisjointWith ?p2 } RULE Forall ?x ?y ( rif:error("inconsistent") :- And( ?x[#p1->?y] ?x[#p2->?y] )) ACTION t11 SELECT ?p1 ?p2 WHERE { ?p1 owl:inverseOf ?p2 } RULE Forall ?x ?y ( ?y[#p2->?x] :- And( ?x[#p1->?y] )) AND Forall ?x ?y ( ?y[#p1->?x] :- And( ?x[#p2->?y] )) ACTION t12 SELECT ?x ?y ?p WHERE { ?x owl:someValuesFrom ?y. ?x owl:onProperty ?p } RULE Forall ?v ?u ( ?u[rdf:type->#x] :- And( ?u[#p->?v] ?v[rdf:type->#y] )) ACTION t13 SELECT ?x ?y ?p WHERE { ?x owl:allValuesFrom ?y. ?x owl:onProperty ?p } RULE Forall ?v ?u ( ?v[rdf:type->#y] :- And( ?u[rdf:type->#x] ?u[#p->?v] )) ACTION t14 SELECT ?x ?y ?p WHERE { ?x owl:hasValue ?y. ?x owl:onProperty ?p } RULE Forall ?u ( ?u[#p->#y] :- And( ?u[rdf:type->#x] )) AND Forall ?u ( ?u[rdf:type->#x] :- And( ?u[#p->#y] )) ACTION t15 SELECT ?x ?p WHERE { ?x owl:maxCardinality 0 . ?x owl:onProperty ?p } RULE Forall ?u ?y ( rif:error("inconsistent") :- And( ?u[#p->?y] ?u[rdf:type->#x] )) ACTION t16 SELECT ?x ?p WHERE { ?x owl:maxCardinality 1 . ?x owl:onProperty ?p } RULE Forall ?y2 ?u ?y1 ( ?y1[owl:sameAs->?y2] :- And( ?u[?#->?y1] ?u[?#->?y2] ?u[rdf:type->?#] )) ACTION t17 SELECT ?c1 ?c2 ?p1 ?p2 WHERE { ?c1 owl:hasValue ?i. ?c1 owl:onProperty ?p1. ?c2 owl:hasValue ?i. ?c2 owl:onProperty ?p2. } RULE Forall ( #c1[rdfs:subClassOf->#c2] :- And( #p1[rdfs:subPropertyOf->#p2] )) ACTION t18 SELECT ?c1 ?c2 ?y1 ?y2 WHERE { ?c1 owl:someValuesFrom ?y1. ?c2 owl:onProperty ?p. ?c2 owl:someValuesFrom ?y2. ?c2 owl:onProperty ?p. } RULE Forall ( #c1[rdfs:subClassOf->#c2] :- And( #y1[rdfs:subClassOf->#y2] )) ACTION t19 SELECT ?c1 ?c2 ?p1 ?p2 WHERE { ?c1 owl:someValuesFrom ?y. ?c1 owl:onProperty ?p1. ?c2 owl:someValuesFrom ?y. ?c2 owl:onProperty ?p2. } RULE Forall ( #c1[rdfs:subClassOf->#c2] :- And( #p1[rdfs:subPropertyOf->#p2] )) ACTION t20 SELECT ?c1 ?c2 ?y1 ?y2 WHERE { ?c1 owl:allValuesFrom ?y1 . ?c1 owl:onProperty ?p . ?c2 owl:allValuesFrom ?y2 . ?c2 owl:onProperty ?p . } RULE Forall ( #c1[rdfs:subClassOf->#c2] :- And( #y1[rdfs:subClassOf->#y2] )) ACTION t21 SELECT ?c1 ?c2 ?p1 ?p2 WHERE { ?c1 owl:allvaluesFrom ?y . ?c1 owl:onProperty ?p1 . ?c2 owl:allValuesFrom ?y . ?c2 owl:onProperty ?p2 . } RULE #c2[rdfs:subClassOf->#c1] :- And( #p1[rdfs:subPropertyOf->#p2] ) ACTION t22 SELECT ?l WHERE { ?d a owl:AllDifferent ; owl:distinctMembers ?l } RULE {x:l| {y:l/x| rif:error('AllDifferent') :- And ( #x[owl:sameAs->#y] ) }} ACTION t23 SELECT ?d ?l WHERE { ?d a owl:AllDisjointProperties ; owl:members ?l } RULE {p1:l| {p2:l/p1| Forall ?p1 ?p2 ( rif:error('AllDisjointProperties') :- And ( #x[?p1->#y ?p2->#y])) }} ACTION t24 SELECT ?d ?l WHERE { ?d a owl:AllDisjointClasses; owl:members ?l } RULE {c1:l| {c2:l/c1| Forall ?c1 ?c2 ( rif:error('AllDisjointClasses') :- And ( #x[rdf:type->?c1 rdf:type->?c2])) ) }} ACTION t25 SELECT ?sc ?pc ?sc ?p WHERE { ?sc owl:propertyChain ?pc; rdfs:subPropertyOf ?p } RULE Forall ?u0 ?u$length(?pc)$ ( ?start[?p->?last] :- And ( {pe:pc| ?u#pe'i[?next->?u#pe'j] } )) ACTION t26 SELECT ?c ?l WHERE { ?c owl:hasKey ?l } RULE Forall ?x ?y ( ?x1[owl:sameAs->?x2] :- And ( ?x1[rdf:type->#c] ?x2[rdf:type->#c] {e:l| ?x1[#e->?v#e'i] ?x2[#e->?v#e'i] } )) ACTION t27 SELECT ?c ?l WHERE { ?c owl:intersectionOf ?l } RULE {x:l| Forall ?y ( ?y[rdf:type->#x] :- And( ?y[rdf:type->#c] )) } AND Forall ?y ( ?y[rdf:type->#x] :- And ( {x:l| ?y[rdf:type->#x] })) ACTION t28 SELECT ?c ?l WHERE { ?c owl:unionOf ?l } RULE {x:l| #x[rdf:subClassOf->#c] } ACTION t29 SELECT ?c ?l WHERE { ?c owl:oneOf ?l } RULE {x:l| #x[rdf:type->#c] }