Re: comments on Euler owl rules

Thanks Peter for those comments;
I've tried to resolve some of them in
http://www.agfa.com/w3c/euler/owl-rules
$Id: owl-rules.n3,v 1.151 2003/06/06 09:27:32 amdus Exp $
We also tested with those, and with the current set
there is a status quo except for
http://www.w3.org/2002/03owlt/equivalentProperty/Manifest005
which we now can't prove anymore (we dropped :rule7p3).

Remark that owl-rules is used in conjunction with
http://www.agfa.com/w3c/euler/rdfs-rules
As a whole this stuff is indeed not complete.


--
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/


                                                                                                                        
                    "Peter F.                                                                                           
                    Patel-Schneider"          To:     Jos De_Roo/AMDUS/MOR/Agfa-NV/BE/BAYER@AGFA                        
                    <pfps@research.bell       cc:     www-webont-wg@w3.org                                              
                    -labs.com>                Subject:     comments on Euler owl rules                                  
                                                                                                                        
                    2003-06-06 04:00 AM                                                                                 
                                                                                                                        
                                                                                                                        




Comments on owl-rules.n3,v 1.148 (149?)

I have taken the liberty of reordering the rules.

I am completely mystified as to what this is supposed to do.  It is missing
huge parts of the OWL semantics, including the comprehension principles.
It has many errors.

Comments on specific rules below.


           <> <#rcsid> "$Id: owl-rules.n3,v 1.148 2003/05/31 10:14:45 amdus
Exp $".

           @prefix log: <http://www.w3.org/2000/10/swap/log#>.
           @prefix math: <http://www.w3.org/2000/10/swap/math#>.
           @prefix owl: <http://www.w3.org/2002/07/owl#>.
           @prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
           @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
           @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
           @prefix : <owl-rules#>.
           @prefix neg: <negation#>.

           ### Web Ontology Language OWL

           owl:Class rdfs:subClassOf rdfs:Class.
           owl:Restriction rdfs:subClassOf owl:Class.
           owl:DataRange rdfs:subclassOf rdfs:Literal.
WRONG           owl:DeprecatedClass rdfs:subclassOf owl:Class.
           #         rdfs:subclassOf is not defined
           #         owl:DeprecatedClass is not specifed as a subclass of
owl:Class.



WRONG           owl:Property rdfs:subClassOf rdf:Property.
           #         owl:Property is not defined in OWL
WRONG           owl:OntologyProperty rdfs:subClassOf owl:Property.
           #         owl:Property is not defined in OWL
WRONG           owl:AnnotationProperty rdfs:subClassOf owl:Property.
           #         owl:Property is not defined in OWL
WRONG           owl:ObjectProperty rdfs:subClassOf owl:Property.
           #         owl:Property is not defined in OWL
WRONG           owl:DatatypeProperty rdfs:subClassOf owl:Property.
           #         owl:Property is not defined in OWL
??         owl:FunctionalProperty rdfs:subClassOf owl:ObjectProperty.
           #         functional properties can be datatype properties
           owl:InverseFunctionalProperty rdfs:subClassOf
owl:ObjectProperty.
           owl:SymmetricProperty rdfs:subClassOf owl:ObjectProperty.
           owl:TransitiveProperty rdfs:subClassOf owl:ObjectProperty.
WRONG           owl:DeprecatedProperty rdfs:subClassOf owl:Property.
           #                   owl:Property is not defined in OWL

??         owl:Ontology a owl:Class.
           #         owl:Ontology is not specified as an owl:Class

           owl:imports rdfs:domain owl:Ontology; rdfs:range owl:Ontology;
a owl:OntologyProperty.
??         owl:incompatibleWith rdfs:domain owl:Ontology; rdfs:range
owl:Ontology; rdfs:subPropertyOf owl:priorVersion.
           #         owl:backwardCompatibleWith is an owl:OntologyProperty
           owl:priorVersion rdfs:domain owl:Ontology; rdfs:range
owl:Ontology; a owl:OntologyProperty.
WRONG           owl:backwardCompatibleWith rdfs:domain owl:Ontology;
rdfs:range owl:Ontology; rdfs:subPropertyOf owl:priorVersion.
           #         owl:backwardCompatibleWith is not a subproperty of
owl:priorVersion
           #         owl:backwardCompatibleWith is an owl:OntologyProperty

WRONG           owl:versionInfo rdfs:domain rdfs:Resource; rdfs:range
rdfs:Resource; a owl:OntologyProperty.
           #         owl:versionInfo is an annotation property
           rdfs:comment a owl:AnnotationProperty.
           rdfs:label a owl:AnnotationProperty.
           rdfs:seeAlso a owl:AnnotationProperty.
           #         missing rdfs:isDefinedBy

??         owl:equivalentClass rdfs:domain rdfs:Class; rdfs:range
rdfs:Class; rdfs:subPropertyOf rdfs:subClassOf; a owl:SymmetricProperty; a
owl:TransitiveProperty.
           #         owl:complementOf is not specified as an object
property
           #         domain and range of owl:equivalentClass can be
determined to be owl:Class
??         owl:disjointWith rdfs:domain rdfs:Class; rdfs:range rdfs:Class;
a owl:SymmetricProperty.
           #         owl:complementOf is not specified as an object
property

??         owl:complementOf rdfs:domain rdfs:Class; rdfs:range rdfs:Class;
a owl:SymmetricProperty.
           #         owl:complementOf is not specified as an object
property
WRONG           owl:intersectionOf rdfs:domain rdfs:Class; rdfs:range
rdf:List; a owl:InverseFunctionalProperty.
           #         owl:intersectionOf is not inverse functional
WRONG           owl:unionOf rdfs:domain rdfs:Class; rdfs:range rdf:List; a
owl:InverseFunctionalProperty.
           #         owl:unionOf is not inverse functional
WRONG           owl:oneOf rdfs:domain rdfs:Class; rdfs:range rdf:List; a
owl:InverseFunctionalProperty.
           #         owl:oneOf is not inverse functional

WRONG           owl:onProperty rdfs:domain owl:Restriction; rdfs:range
owl:Property.
           # the domain and range of owl:onProperty are unspecified
WRONG           owl:allValuesFrom rdfs:domain owl:Restriction; rdfs:range
rdfs:Class.
           # the domain and range of owl:allValuesFrom are unspecified
WRONG           owl:someValuesFrom rdfs:domain owl:Restriction; rdfs:range
rdfs:Class.
           # the domain and range of owl:someValuesFrom are unspecified
WRONG           owl:hasValue rdfs:domain owl:Restriction; rdfs:range
rdfs:Resource.
           # the domain of owl:hasValue is unspecified
WRONG           owl:cardinality rdfs:domain owl:Restriction; rdfs:range
xsd:nonNegativeInteger.
           # the domain and range of owl:cardinality are unspecified
WRONG           owl:maxCardinality rdfs:domain owl:Restriction; rdfs:range
xsd:nonNegativeInteger.
           # the domain and range of owl:cardinality are unspecified
WRONG           owl:minCardinality rdfs:domain owl:Restriction; rdfs:range
xsd:nonNegativeInteger.
           # the domain and range of owl:cardinality are unspecified

WRONG           owl:equivalentProperty rdfs:domain owl:Property; rdfs:range
owl:Property; rdfs:subPropertyOf rdfs:subPropertyOf; a
owl:SymmetricProperty; a owl:TransitiveProperty.
           #         owl:Property is not defined in OWL
           #         owl:equivalentProperty is not specified as an object
property

??         owl:inverseOf rdfs:domain owl:Property; rdfs:range owl:Property;
a owl:SymmetricProperty.
           #         owl:inverseOf is not specified as an
owl:ObjectProperty

#          owl:differentFrom rdfs:domain rdfs:Resource; rdfs:range
rdfs:Resource; a owl:SymmetricProperty.
           #         owl:differentFrom is not specified as an object
property
           owl:distinctMembers rdfs:domain rdfs:Resource; rdfs:range
rdf:List.

WRONG           rdf:first a owl:FunctionalProperty.
           #         rdf:first is not a functional property
           rdf:rest a owl:FunctionalProperty.
           #         rdf:rest is not a functional property

??         owl:Thing rdfs:subClassOf rdfs:Resource.
           #         owl:thing is not specified as an owl:Class
           owl:Nothing a owl:Class; owl:oneOf rdf:nil.


           ### inference rules for Web Ontology Language OWL

           {: rdfs:fyi :rule4p1. ?P owl:equivalentProperty ?R. ?S ?P ?O} =>
{?S ?R ?O}.
           {: rdfs:fyi :rule4p2. ?P owl:equivalentProperty ?R. ?S ?R ?O} =>
{?S ?P ?O}.

           {: rdfs:fyi :rule5e1. ?X owl:sameAs ?Z. ?X ?P ?Y} => {?Z ?P ?Y}.
           {: rdfs:fyi :rule5e2. ?P owl:sameAs ?Q. ?X ?P ?Y} => {?X ?Q ?Y}.
           {: rdfs:fyi :rule5e3. ?Y owl:sameAs ?Z. ?X ?P ?Y} => {?X ?P ?Z}.

??         {: rdfs:fyi :rule1i1. ?P owl:inverseOf ?Q. ?S ?P ?O} => {?O ?Q
?S}.
           #         missing ?P rdf:type owl:ObjectProperty condition
??         {: rdfs:fyi :rule1s1. ?P a owl:SymmetricProperty. ?S ?P ?O} =>
{?O ?P ?S}.
           #         missing ?P rdf:type owl:ObjectProperty condition
??         {: rdfs:fyi :rule2t1. ?P a owl:TransitiveProperty. ?X ?P ?O. ?S
?P ?X} => {?S ?P ?O}.
           #         missing ?P rdf:type owl:ObjectProperty condition
??         {: rdfs:fyi :rule6e2. ?P a owl:FunctionalProperty. ?S ?P ?X. ?S
?P ?Y} => {?X owl:sameAs ?Y}.
           #         missing ?P rdf:type owl:ObjectProperty or
owl:DatatypeProperty condition
??         {: rdfs:fyi :rule6e3. ?P a owl:InverseFunctionalProperty. ?X ?P
?O. ?Y ?P ?O} => {?X owl:sameAs ?Y}.
           #         missing ?P rdf:type owl:ObjectProperty condition

           {: rdfs:fyi :rule3r1. ?R owl:onProperty ?P; owl:hasValue ?Y. ?X
a ?R} => {?X ?P ?Y}.


WRONG           {: rdfs:fyi :rule6e4. ?R owl:onProperty ?P. ?R
owl:maxCardinality "1". ?S a ?R. ?S ?P ?X. ?S ?P ?Y} => {?X owl:sameAs ?Y}.
           #         needs to be the integer 1, not the literal "1"

??         {: rdfs:fyi :rule7c1. ?A rdfs:subClassOf ?B. ?B rdfs:subClassOf
?A} => {?A owl:equivalentClass ?B}.
           #         missing ?A rdf:type owl:Class condition
??         {: rdfs:fyi :rule7c2. ?A owl:complementOf ?C. ?B
owl:complementOf ?C} => {?A owl:equivalentClass ?B}.
           #         missing ?A rdf:type owl:Class condition
           {: rdfs:fyi :rule7c3. ?B owl:onProperty ?P; owl:cardinality ?M.
?A owl:onProperty ?P; owl:cardinality ?M} => {?A owl:equivalentClass ?B}.
??         {: rdfs:fyi :rule7c4. ?B owl:intersectionOf ?L. ?L rdf:first ?A;
rdf:rest rdf:nil} => {?A owl:equivalentClass ?B}.
           #         missing ?L rdf:type owl:Class condition

??         {: rdfs:fyi :rule7p1. ?A rdfs:subPropertyOf ?B. ?B
rdfs:subPropertyOf ?A} => {?A owl:equivalentProperty ?B}.
           #         missing ?L rdf:type owl:ObjectProperty or
owl:DatatypeProperty condition
??         {: rdfs:fyi :rule7p2. ?A owl:inverseOf ?C. ?B owl:inverseOf ?C}
=> {?A owl:equivalentProperty ?B}.
           #         missing ?L rdf:type owl:ObjectProperty condition
WRONG           {: rdfs:fyi :rule7p3. ?R owl:onProperty ?A; owl:hasValue
?V.
                                     ?T owl:onProperty ?B; owl:hasValue ?V.

                                     ?A rdfs:domain ?D; a
owl:FunctionalProperty.
                                     ?B rdfs:domain ?D; a
owl:FunctionalProperty.
                                     ?D rdfs:subClassOf ?R, ?T} => {?A
owl:equivalentProperty ?B}.
           #         this does not follow - ?A could be empty and ?B not

           {: rdfs:fyi :rule7d1. ?L rdf:first ?X; rdf:rest ?M. ?M :item ?Y.
?A owl:distinctMembers ?L; a owl:AllDifferent} => {?X owl:differentFrom
?Y}.
WRONG           {: rdfs:fyi :rule7j1. ?L rdf:first ?X; rdf:rest ?M. ?M
:item ?Y. ?A owl:distinctMembers ?L; a owl:AllDisjoint} => {?X
owl:disjointWith ?Y}.
           #         owl:AllDisjoint not defined

           {: rdfs:fyi :rule8s1. ?B owl:intersectionOf ?Y. ?A
owl:intersectionOf ?X. ?X :includes ?Y} => {?A rdfs:subClassOf ?B}.
           {: rdfs:fyi :rule8s2. ?B owl:unionOf ?Y. ?A owl:unionOf ?X. ?Y
:includes ?X} => {?A rdfs:subClassOf ?B}.
           {: rdfs:fyi :rule8s3. ?B owl:oneOf ?Y. ?A owl:oneOf ?X. ?Y
:includes ?X} => {?A rdfs:subClassOf ?B}.
           {: rdfs:fyi :rule8s4. ?A owl:intersectionOf ?X. ?X :item ?B} =>
{?A rdfs:subClassOf ?B}.
           {: rdfs:fyi :rule8s5. ?B owl:unionOf ?Y. ?Y :item ?A} => {?A
rdfs:subClassOf ?B}.
           {: rdfs:fyi :rule8s6. ?X rdf:first ?A. ?C owl:intersectionOf ?X.
?R rdfs:subClassOf ?C} => {?R rdfs:subClassOf ?A}.
           {: rdfs:fyi :rule8s7. ?A owl:onProperty rdf:type; owl:hasValue
?B} => {?A rdfs:subClassOf ?B}.

           {: rdfs:fyi :rule9o1. ?C owl:oneOf ?X. ?X :item ?Y} => {?Y a
?C}.
           {: rdfs:fyi :rule9i2. ?C owl:intersectionOf ?X. ?Y :inAllOf ?X}
=> {?Y a ?C}.
           {: rdfs:fyi :rule9u1. ?C owl:unionOf ?X. ?Y :inSomeOf ?X} => {?Y
a ?C}.
           {: rdfs:fyi :rule9r1. ?R owl:onProperty ?P; owl:allValuesFrom
?C. ?S a ?R. ?S ?P ?X} => {?X a ?C}.
           {: rdfs:fyi :rule9r2. ?R owl:onProperty ?P; owl:hasValue ?Y. ?X
?P ?Y} => {?X a ?R}.
WRONG           {: rdfs:fyi :rule9r3. ?R owl:onProperty ?P;
owl:allValuesFrom ?C} => {?P a owl:ObjectProperty; rdfs:range ?C}.
           #         the range of ?P does not need to be ?C
           #         ?P might be an owl:DatatypeProperty
           {: rdfs:fyi :rule9f1. ?P owl:inverseOf ?Q. ?Q a
owl:FunctionalProperty} => {?P a owl:InverseFunctionalProperty}.
           {: rdfs:fyi :rule9f2. ?C owl:oneOf ?L. ?L rdf:first ?X; rdf:rest
rdf:nil. ?P rdfs:range ?C} => {?P a owl:FunctionalProperty}.
           {: rdfs:fyi :rule9i1. ?P owl:inverseOf ?Q. ?Q a
owl:InverseFunctionalProperty} => {?P a owl:FunctionalProperty}.
           {: rdfs:fyi :rule9i2. ?C owl:oneOf ?L. ?L rdf:first ?X; rdf:rest
rdf:nil. ?P rdfs:domain ?C} => {?P a owl:InverseFunctionalProperty}.
           {: rdfs:fyi :rule9d1. ?P rdfs:domain ?C. ?P owl:inverseOf ?Q} =>
{?Q rdfs:range ?C}.
           {: rdfs:fyi :rule9d2. ?P rdfs:range ?C. ?P owl:inverseOf ?Q} =>
{?Q rdfs:domain ?C}.

WRONG           {: rdfs:fyi :rule10c1. ?R owl:onProperty ?P;
owl:minCardinality ?M; owl:maxCardinality ?M} => {?R owl:cardinality ?M}.
           #         there no sufficient conditions for owl:cardinalty
WRONG           {: rdfs:fyi :rule10c3. ?R owl:onProperty ?P;
owl:cardinality ?M} => {?R owl:minCardinality ?M}.
           #         there no sufficient conditions for owl:minCardinalty
WRONG           {: rdfs:fyi :rule10c4. ?R owl:onProperty ?P;
owl:cardinality ?M} => {?R owl:maxCardinality ?M}.
           #         there no sufficient conditions for owl:maxCardinalty
           {: rdfs:fyi :rule10a1. ?L rdf:rest ?M. ?A owl:distinctMembers
?L} => {?A owl:distinctMembers ?M}.

           ### inconsistency detections @@

??         {: rdfs:fyi :rule20n0. ?X a owl:Nothing} => {?X
log:inconsistentWith owl:Nothing}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20n1. rdf:nil rdf:first ?X} => {?X
log:inconsistentWith rdf:nil}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20n2. rdf:nil rdf:rest ?X} => {?X
log:inconsistentWith rdf:nil}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20c1. ?Y owl:complementOf ?Z. ?X a ?Y, ?Z} =>
{?X log:inconsistentWith owl:complementOf}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20c2. ?Y owl:complementOf ?X;
owl:equivalentClass ?X} => {?X log:inconsistentWith owl:complementOf}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20d0. ?Y owl:disjointWith ?X;
owl:equivalentClass ?X} => {?X log:inconsistentWith owl:disjointWith}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20d1. ?Y owl:disjointWith ?Z. ?X a ?Y, ?Z} =>
{?X log:inconsistentWith owl:disjointWith}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20u1. ?P a owl:FunctionalProperty. ?S ?P ?X,
?Y. ?X owl:differentFrom ?Y} => {?X log:inconsistentWith
owl:FunctionalProperty}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20a1. ?P a owl:InverseFunctionalProperty. ?X ?P
?O. ?Y ?P ?O. ?X owl:differentFrom ?Y} => {?X log:inconsistentWith
owl:InverseFunctionalProperty}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20o0. ?C owl:oneOf ?L. ?P rdfs:domain ?C. ?X ?P
?O. ?L neg:item ?X} => {?X log:inconsistentWith owl:oneOf}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20o1. ?C owl:oneOf ?L. ?P rdfs:range ?C. ?S ?P
?X. ?L neg:item ?X} => {?X log:inconsistentWith owl:oneOf}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20o2. ?C owl:oneOf ?L. ?X a ?C. ?L neg:item ?X}
=> {?X log:inconsistentWith owl:oneOf}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20r0. ?R owl:onProperty ?P; owl:maxCardinality
?M. ?M math:equalTo 0. ?X a ?R; ?P ?Y} => {?X log:inconsistentWith
owl:maxCardinality}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20r1. ?R owl:onProperty ?P; owl:maxCardinality
?M. ?M math:equalTo 1. ?X a ?R; ?P ?Y1, ?Y2. ?Y2 owl:differentFrom ?Y1} =>
{?X log:inconsistentWith owl:maxCardinality}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20r2. ?R owl:onProperty ?P; owl:maxCardinality
?M. ?M math:equalTo 2. ?X a ?R; ?P ?Y1, ?Y2, ?Y3. ?Y2 owl:differentFrom
?Y1. ?Y3 owl:differentFrom ?Y1, ?Y2} => {?X log:inconsistentWith
owl:maxCardinality}.
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20q0. ?R owl:onProperty ?P; owl:maxCardinalityQ
?M; owl:hasClassQ ?A. ?M math:equalTo 0. ?X a ?R; ?P ?Y. ?Y a ?A} => {?X
log:inconsistentWith owl:maxCardinalityQ}.
           #         owl:hasClassQ is not defined in OWL
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20q1. ?R owl:onProperty ?P; owl:maxCardinalityQ
?M; owl:hasClassQ ?A. ?M math:equalTo 1. ?X a ?R; ?P ?Y1, ?Y2. ?Y2
owl:differentFrom ?Y1. ?Y1 a ?A. ?Y2 a ?A} => {?X log:inconsistentWith
owl:maxCardinalityQ}.
           #         owl:hasClassQ is not defined in OWL
           #         log:inconsistentWith is not defined in OWL
??         {: rdfs:fyi :rule20q2. ?R owl:onProperty ?P; owl:maxCardinalityQ
?M; owl:hasClassQ ?A. ?M math:equalTo 2. ?X a ?R; ?P ?Y1, ?Y2, ?Y3. ?Y2
owl:differentFrom ?Y1. ?Y3 owl:differentFrom ?Y1, ?Y2. ?Y1 a ?A. ?Y2 a ?A.
?Y3 a ?A} => {?X log:inconsistentWith owl:maxCardinalityQ}.
           #         owl:hasClassQ is not defined in OWL
           #         log:inconsistentWith is not defined in OWL


           ### support @@

           {: rdfs:fyi :rule40i1. ?S rdf:first ?X} => {?S :item ?X}.
           {: rdfs:fyi :rule40i2. ?S rdf:rest ?B. ?B :item ?X} => {?S :item
?X}.
           {: rdfs:fyi :rule40n1} => {rdf:nil neg:item ?X}.
           {: rdfs:fyi :rule40n2. ?S rdf:first ?A. ?A owl:differentFrom ?X.
?S rdf:rest ?B. ?B neg:item ?X} => {?S neg:item ?X}.

           {: rdfs:fyi :rule41i1} => {?X :includes rdf:nil}.
           {: rdfs:fyi :rule41i2. ?S rdf:first ?A. ?X :item ?A. ?S rdf:rest
?B. ?X :includes ?B} => {?X :includes ?S}.
           {: rdfs:fyi :rule41o1. ?X rdf:first ?A. ?S :item ?A. ?X rdf:rest
?B. ?B :zeroItemsIn ?S} => {?X :oneItemIn ?S}.
           {: rdfs:fyi :rule41o2. ?X rdf:first ?A. ?S neg:item ?A. ?X
rdf:rest ?B. ?B :oneItemIn ?S} => {?X :oneItemIn ?S}.
           {: rdfs:fyi :rule41z1} => {rdf:nil :zeroItemsIn ?S}.
           {: rdfs:fyi :rule41z2. ?X rdf:first ?A. ?S neg:item ?A. ?X
rdf:rest ?B. ?B :zeroItemsIn ?S} => {?X :zeroItemsIn ?S}.

           {: rdfs:fyi :rule42a1} => {?X :inAllOf rdf:nil}.
           {: rdfs:fyi :rule42a2. ?S rdf:first ?A. ?X a ?A. ?S rdf:rest ?B.
?X :inAllOf ?B} => {?X :inAllOf ?S}.
           {: rdfs:fyi :rule42s1. ?S rdf:first ?A. ?X a ?A} => {?X
:inSomeOf ?S}.
           {: rdfs:fyi :rule42s2. ?S rdf:rest ?B. ?X :inSomeOf ?B} => {?X
:inSomeOf ?S}.

           {: rdfs:fyi :rule60n1. ?A owl:complementOf ?B. ?C a ?A} => {?C
neg:type ?B}.
           {: rdfs:fyi :rule60n2. ?A owl:oneOf ?L. ?L neg:item ?C} => {?C
neg:type ?A}.
           {: rdfs:fyi :rule60n3. ?A owl:complementOf ?B. ?C neg:type ?A}
=> {?C a ?B}.

??         rdfs:Class rdf:type _:i .
??         _:i owl:intersectionOf _:l .
??         _:l rdf:first rdfs:Class .
??         _:l rdf:rest rdf:nil .
           #         this doesn't belong in the OWL rules

Received on Friday, 6 June 2003 06:44:48 UTC