ACTION t01 SELECT ?p WHERE { ?p a owl:FunctionalProperty } RULE (?x %p ?y1), (?x %p ?y2), notEqual(?y1, ?y2) -> (?y1 owl:sameAs ?y2) ACTION t02 SELECT ?p WHERE { ?p a owl:InverseFunctionalProperty } RULE (?x1 %p ?y), (?x2 %p ?y), notEqual(?x1, ?x2) -> (?x1 owl:sameAs ?x2) ACTION t03 SELECT ?p WHERE { ?p a owl:ReflexiveProperty } RULE (?x %p ?y) -> (?x %p ?x), (?y %p ?y) ACTION t04 SELECT ?p WHERE { ?p a owl:IrreflexiveProperty } RULE (?x %p ?x) -> (%p rb:violation error('irreflexive', ?x)) ACTION t05 SELECT ?p WHERE { ?p a owl:SymmetricProperty } RULE (?x %p ?y) -> (?y %p ?x) ACTION t06 SELECT ?p WHERE { ?p a owl:AsymmetricProperty } RULE (?x %p ?y), (?y %p ?x) -> (%p rb:violation error('antisymmetric', ?x, ?y)) ACTION t07 SELECT ?p WHERE { ?p a owl:TransitiveProperty } RULE (?x %p ?y), (?y %p ?z) -> (?x %p ?z) ACTION t08 SELECT ?p1 ?p2 WHERE { ?p1 rdfs:subPropertyOf ?p2 } RULE (?x %p1 ?y) -> (?x %p2 ?y) ACTION t09 SELECT ?p1 ?p2 WHERE { ?p1 owl:equivalentProperty ?p2 } RULE (?x %p1 ?y) -> (?x %p2 ?y) ACTION t10 SELECT ?p1 ?p2 WHERE { ?p1 owl:propertyDisjointWith ?p2 } RULE (?x %p1 ?y), (?x %p2 ?y) -> (%p rb:violation error('propertyDisjointWith', %p1, %p2, ?x, ?y)) ACTION t11 SELECT ?p1 ?p2 WHERE { ?p1 owl:inverseOf ?p2 } RULE (?x %p2 ?y) -> (?x %p1 ?y) AND (?x %p1 ?y) -> (?x %p2 ?y) ACTION t12 SELECT ?x ?y ?p WHERE { ?x owl:someValuesFrom ?y. ?x owl:onProperty ?p } RULE (?u %p ?v), (?v rdf:type ?t) -> (?u rdf:type ?t) ACTION t13 SELECT ?x ?y ?p WHERE { ?x owl:allValuesFrom ?y. ?x owl:onProperty ?p } RULE (?u rdf:type %x), (?u %p ?v) -> (?v rdf:type %y) ACTION t14 SELECT ?x ?y ?p WHERE { ?x owl:hasValue ?y. ?x owl:onProperty ?p } RULE (?u rdf:type %x) -> (?u %p %y) AND (?u %p %y) -> (?u rdf:type %x) ACTION t15 SELECT ?x ?p WHERE { ?x owl:maxCardinality 0 . ?x owl:onProperty ?p } RULE (?y %p %y), (?u rdf:type %x) -> (%p rb:violation error('maxCardinality 0', ?y, %p, %y)) ACTION t16 SELECT ?x ?p WHERE { ?x owl:maxCardinality 1 . ?x owl:onProperty ?p } RULE (?u %p ?y1), (?u %p ?y2), (?u rdf:type %x) -> (?y1 owl:sameAs ?y2) 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 (%p1 rdfs:subPropertyOf %p2) -> (%c1 rdfs:subClassOf %c2) 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 (%y1 rdfs:subClassOf %y2) -> (%c1 rdfs:subClassOf %c2) 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 (%p1 rdfs:subPropertyOf %p2) -> (%c1 rdfs:subClassOf %c2) 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 (%p1 rdfs:subPropertyOf %p2) -> (%c1 rdfs:subClassOf %c2) 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 (%p1 rdfs:subPropertyOf %p2) -> (%c1 rdfs:subClassOf %c2) ACTION t22 SELECT ?l WHERE { ?d a owl:AllDifferent ; owl:distinctMembers ?l } RULE {x:l| {y:l/x| AND -> (#x owl:differentFrom #y) (#y owl:differentFrom #x) AND (#x owl:sameAs #y) -> (#x rb:violation error(#x, 'declared different from', #y)) }} ACTION t23 SELECT ?d ?l WHERE { ?d a owl:AllDisjointProperties ; owl:members ?l } RULE {p1:l| {p2:l/p1| AND (?x #p1 ?y) (?x #p2 ?y) -> (#d rb:violation error(#p1, #p2, ?x, ?y)) }} ACTION t24 SELECT ?d ?l WHERE { ?d a owl:AllDisjointClasses; owl:members ?l } RULE {c1:l| {c2:l/c1| AND (?x rdf:type #c1) (?x rdf:type #c2) -> (#d rb:violation error(#d, 'disjoint classes', ?x, #c1, #c2)) }} ACTION t25 SELECT ?sc ?pc ?sc ?p WHERE { ?sc owl:propertyChain ?pc; rdfs:subPropertyOf ?p } RULE {pe:pc| (?u#pe'i #pe ?u#pe'j)} -> (?u1 #p ?u#pe'j) ACTION t26 SELECT ?c ?l WHERE { ?c owl:hasKey ?l } RULE (?x1 rdf:type %c), (?x2 rdf:type %c), {e:l| (?x1 %e ?v#e'i), (?x2 %e ?v#e'i)} -> (?x1 owl:sameAs ?x2) ACTION t27 SELECT ?c ?l WHERE { ?c owl:intersectionOf ?l } RULE (?y rdf:type #c) -> {x:l| (?y rdf:type #x)} AND {x:l| (?y rdf:type #x)} -> (?y rdf:type #c) ACTION t28 SELECT ?c ?l WHERE { ?c owl:unionOf ?l } RULE {x:l| AND (?y rdf:type #x) -> (?y rdf:type #c)} ACTION t29 SELECT ?c ?l WHERE { ?c owl:oneOf ?l } RULE {x:l| AND -> (#x rdf:type #c)}