@prefix rdf: . @prefix rdfs: . @prefix owl: . @prefix log: . @prefix : <#> . # Classes {?c rdfs:subClassOf ?d1. ?d1 rdfs:subClassOf ?d} => {?c rdfs:subClassOf ?d}. {?x rdf:type ?c. ?c rdfs:subClassOf ?d} => {?x rdf:type ?d}. #?x rdf:type ?c is in the antecedent! {?c rdfs:subClassOf ?d. ?d rdfs:subClassOf ?c} => {?c owl:equivalentClass ?d}. {?x rdf:type ?c. ?d rdfs:subClassOf ?c. ?x rdf:type ?d} => {?c :notMscOf ?x}. #Unless Equivalent! {?c owl:equivalentClass ?d. ?x rdf:type ?c} => {?x rdf:type ?d}. ##How to do direct subclasses? No Not! # Properties {?p rdfs:subPropertyOf ?q1. ?q1 rdfs:subPropertyOf ?q} => {?p rdfs:subPropertyOf ?q}. {?c rdfs:subPropertyOf ?d. ?d rdfs:subPropertyOf ?d} => {?c owl:equivalentProperty ?d}. # {?p owl:equivalentProperty ?q. ?x ?p ?y} # => # {?x ?q ?y}. # {?x ?p ?y. ?p rdfs:subPropertyOf ?q} # => # {?x ?q ?y}. # {?p owl:inverseOf ?q. ?x ?q ?y.} # => # {?y ?p ?x}. # {?p owl:inverseOf ?q. ?x ?p ?y.} # => # {?y ?q ?x}. # {?p owl:inverseOf ?q. ?q a owl:FunctionalProperty} # => # {?p a owl:InverseFunctionalProperty}. # {?p owl:inverseOf ?q. ?q a owl:InverseFunctionalProperty} # => # {?p a owl:FunctionalProperty}. # {?p a owl:TransitiveProperty. ?x ?p ?y1. ?y1 ?p ?y} # => # {?x ?p ?y}. # {?p a owl:InverseFunctionalProperty. ?x ?p ?o. ?y ?p ?o} # => # {?x owl:sameAs ?y}. # {?p a owl:SymmetricProperty. ?x ?p ?o} # => # {?o ?p ?x}. # # Individuals # {?x owl:sameAs ?y. ?x ?p ?z.} # => # {?y ?p ?z}. # {?x owl:sameAs ?y. ?z ?p ?x.} # => # {?z ?p ?y}.