@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix o2:  <http://www.w3.org/2007/ont/o2#>.   # Just for 'chain' missing from owl
@keywords is, of, a.

{?x ?p ?y. ?p o2:chain (?q1 ?q2) }  =>  {?x ?q1 [ ?q2 ?y]}.

{?x ?p ?y. ?p o2:chain (?q1 ?q2 ?q3) }  =>  {?x ?q1 [ ?q2 [?q3 ?y]]}.


{?x ?q1 [ ?q2 ?y]. ?p o2:chain (?q1 ?q2) } => {?x ?p ?y}.
{?x ?q1 [ ?q2 [?q3 ?y]]. ?p o2:chain (?q1 ?q2 ?q3) } => {?x ?p ?y}.

{ ?x ?p ?y.  ?p = ?q } => {?x ?q  ?y}.
{ ?x ?p ?y.  ?q = ?p } => {?x ?q  ?y}.

{ ?x ?p ?y.  ?p owl:equivalentProperty ?q } => {?x ?q  ?y}.
{ ?x ?p ?y.  ?q owl:equivalentProperty ?p } => {?x ?q  ?y}.

{ ?x ?p ?y.  ?p rdfs:subPropertyOf ?q } => {?x ?q  ?y}.

{?x ?p ?y, ?z. ?p a owl:FunctionalProperty} => { ?y = ?z}.
{?x is ?p of ?y, ?z. ?p a owl:InverseFunctionalProperty} => { ?y = ?z}.


