# $Id: rdfs-rules.n3,v 1.14 2002/02/22 11:17:33 amdus Exp $ ## rules for RDFS entailment @prefix log: . @prefix rdf: . @prefix rdfs: . @prefix mt: . @prefix : . rdfs:Resource a rdfs:Class . rdfs:Literal a rdfs:Class . rdfs:Class a rdfs:Class . rdf:Property a rdfs:Class . rdf:type a rdf:Property . rdf:type rdfs:domain rdfs:Resource . rdf:type rdfs:range rdfs:Class . rdfs:domain a rdf:Property . rdfs:domain rdfs:domain rdf:Property . rdfs:domain rdfs:range rdfs:Class . rdfs:range a rdf:Property . rdfs:range rdfs:domain rdf:Property . rdfs:range rdfs:range rdfs:Class . rdfs:subPropertyOf a rdf:Property . rdfs:subPropertyOf rdfs:domain rdf:Property . rdfs:subPropertyOf rdfs:range rdf:Property . rdfs:subClassOf a rdf:Property . rdfs:subClassOf rdfs:domain rdfs:Class . rdfs:subClassOf rdfs:range rdfs:Class . :RDFS-RULE-2 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-3 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-4a rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-4b rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-5 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-6 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-7 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-8 rdfs:isDefinedBy mt:rdfsentail . :RDFS-RULE-9 rdfs:isDefinedBy mt:rdfsentail . this log:forAll :s, :p, :o, :a, :b, :c, :A, :B, :C . { :RDFS-RULE-2 rdfs:isDefinedBy mt:rdfsentail . :s :p :o . :p rdfs:domain :C } log:implies { :s a :C } . { :RDFS-RULE-3 rdfs:isDefinedBy mt:rdfsentail . :s :p :o . :p rdfs:range :C } log:implies { :o a :C } . { :RDFS-RULE-4a rdfs:isDefinedBy mt:rdfsentail . :s :p :o } log:implies { :s a rdfs:Resource } . { :RDFS-RULE-4b rdfs:isDefinedBy mt:rdfsentail . :s :p :o } log:implies { :o a rdfs:Resource } . { :RDFS-RULE-5 rdfs:isDefinedBy mt:rdfsentail . :b rdfs:subPropertyOf :c . :a rdfs:subPropertyOf :b } log:implies { :a rdfs:subPropertyOf :c } . { :RDFS-RULE-6 rdfs:isDefinedBy mt:rdfsentail . :p rdfs:subPropertyOf :b . :s :p :o } log:implies { :s :b :o } . { :RDFS-RULE-7 rdfs:isDefinedBy mt:rdfsentail . :C a rdfs:Class } log:implies { :C rdfs:subClassOf rdfs:Resource } . { :RDFS-RULE-8 rdfs:isDefinedBy mt:rdfsentail . :B rdfs:subClassOf :C . :A rdfs:subClassOf :B } log:implies { :A rdfs:subClassOf :C } . { :RDFS-RULE-9 rdfs:isDefinedBy mt:rdfsentail . :A rdfs:subClassOf :B . :a a :A } log:implies { :a a :B } . #{ ?x a rdf:Property } log:implies { ?x rdfs:subPropertyOf ?x } . #{ ?x a rdfs:Class } log:implies { ?x rdfs:subClassOf ?x } . ## rules for RDF Datatyping rdfs:Datatype a rdfs:Class . rdfs:dlex a rdf:Property . rdfs:dlex rdfs:domain rdfs:Resource . rdfs:dlex rdfs:range rdfs:Literal . rdfs:drange a rdf:Property . rdfs:drange rdfs:domain rdfs:Property . rdfs:drange rdfs:range rdfs:Datatype . rdfs:drange rdfs:subPropertyOf rdfs:range . #{ ?d a rdfs:Datatype } log:implies { ?d rdfs:domain ?d } . #{ ?d a rdfs:Datatype . ?o ?d ?l } log:implies { ?o rdfs:dlex ?l } . #{ ?p rdfs:drange ?d . ?o rdfs:dlex ?l . ?s ?p ?o } log:implies { ?o ?d ?l } . #CWMClone doesn't do '?'s. There's some weird redundancy here too. this log:forAll :d, :l. { :d a rdfs:Datatype } log:implies { :d rdfs:domain :d } . { :d a rdfs:Datatype . :o :d :l } log:implies { :o rdfs:dlex :l } . { :p rdfs:drange :d . :o rdfs:dlex :l . :s :p :o } log:implies { :o :d :l } .