previous next top contents index

OWL Web Ontology Language
Test Cases
7.3.6. Extended Cardinality Testing


Contents


7.3.6. Extended Cardinality Testing

DL Full Positive Entailment Test:901
Description: (informative) <description-logic/Manifest901#test>
This entailment can be replicated for any three natural numbers i, j, k such that i+j >= k. In this example, they are chosen as 2, 3 and 5.
N3 format is informative.
DLPremises: <description-logic/premises901>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/premises901" >

  <owl:ObjectProperty rdf:ID="r"/>
  <owl:ObjectProperty rdf:ID="p">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="A"/>
    </rdfs:range>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="q">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="B"/>
    </rdfs:range>
  </owl:ObjectProperty>
  <owl:Class rdf:about="#A">
    <owl:disjointWith rdf:resource="#B"/>
  </owl:Class>

</rdf:RDF>
first:r rdf:type owl:ObjectProperty .
first:p rdf:type owl:ObjectProperty .
first:p rdfs:subPropertyOf first:r .
first:A rdf:type owl:Class .
first:p rdfs:range first:A .
first:q rdf:type owl:ObjectProperty .
first:q rdfs:subPropertyOf first:r .
first:B rdf:type owl:Class .
first:q rdfs:range first:B .
first:A rdf:type owl:Class .
first:A owl:disjointWith first:B .
DLConclusions: <description-logic/conclusions901>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:first="http://www.w3.org/2002/03owlt/description-logic/premises901#"
    xmlns:second="http://www.w3.org/2002/03owlt/description-logic/conclusions901#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/conclusions901" >

  <owl:Class>
    <owl:intersectionOf rdf:parseType="Collection">
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises901#p"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >2</owl:minCardinality>
       </owl:Restriction>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises901#q"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >3</owl:minCardinality>
       </owl:Restriction>
    </owl:intersectionOf>
    <rdfs:subClassOf>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises901#r"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >5</owl:minCardinality>
       </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
</rdf:RDF>
_:a rdf:type owl:Class .
_:c rdf:type owl:Restriction .
first:p rdf:type owl:ObjectProperty .
_:c owl:onProperty first:p .
_:c owl:minCardinality "2"^^xsd:nonNegativeInteger  .
_:e rdf:type owl:Restriction .
first:q rdf:type owl:ObjectProperty .
_:e owl:onProperty first:q .
_:e owl:minCardinality "3"^^xsd:nonNegativeInteger  .
_:g rdf:first _:e .
_:g rdf:rest rdf:nil .
_:i rdf:first _:c .
_:i rdf:rest _:g .
_:a owl:intersectionOf _:i .
_:k rdf:type owl:Restriction .
first:r rdf:type owl:ObjectProperty .
_:k owl:onProperty first:r .
_:k owl:minCardinality "5"^^xsd:nonNegativeInteger  .
_:a rdfs:subClassOf _:k .

DL Full Negative Entailment Test:902
Description: (informative) <description-logic/Manifest902#test>
This non-entailment can be replicated for any three natural numbers i, j, k such that i+j < k. In this example, they are chosen as 2, 3 and 6.
N3 format is informative.
DLPremises: <description-logic/premises902>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/premises902" >

  <owl:ObjectProperty rdf:ID="r"/>
  <owl:ObjectProperty rdf:ID="p">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="A"/>
    </rdfs:range>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="q">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="B"/>
    </rdfs:range>
  </owl:ObjectProperty>
  <owl:Class rdf:about="#A">
    <owl:disjointWith rdf:resource="#B"/>
  </owl:Class>

</rdf:RDF>
first:r rdf:type owl:ObjectProperty .
first:p rdf:type owl:ObjectProperty .
first:p rdfs:subPropertyOf first:r .
first:A rdf:type owl:Class .
first:p rdfs:range first:A .
first:q rdf:type owl:ObjectProperty .
first:q rdfs:subPropertyOf first:r .
first:B rdf:type owl:Class .
first:q rdfs:range first:B .
first:A rdf:type owl:Class .
first:A owl:disjointWith first:B .
DLConclusions: <description-logic/nonconclusions902>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/nonconclusions902" >

  <owl:Class>
    <owl:intersectionOf rdf:parseType="Collection">
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises902#p"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >2</owl:minCardinality>
       </owl:Restriction>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises902#q"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >3</owl:minCardinality>
       </owl:Restriction>
    </owl:intersectionOf>
    <rdfs:subClassOf>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises902#r"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >6</owl:minCardinality>
       </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
</rdf:RDF>
_:a rdf:type owl:Class .
_:c rdf:type owl:Restriction .
first:p rdf:type owl:ObjectProperty .
_:c owl:onProperty first:p .
_:c owl:minCardinality "2"^^xsd:nonNegativeInteger  .
_:e rdf:type owl:Restriction .
first:q rdf:type owl:ObjectProperty .
_:e owl:onProperty first:q .
_:e owl:minCardinality "3"^^xsd:nonNegativeInteger  .
_:g rdf:first _:e .
_:g rdf:rest rdf:nil .
_:i rdf:first _:c .
_:i rdf:rest _:g .
_:a owl:intersectionOf _:i .
_:k rdf:type owl:Restriction .
first:r rdf:type owl:ObjectProperty .
_:k owl:onProperty first:r .
_:k owl:minCardinality "6"^^xsd:nonNegativeInteger  .
_:a rdfs:subClassOf _:k .

DL Full Positive Entailment Test:903
Description: (informative) <description-logic/Manifest903#test>
This entailment can be replicated for any three natural numbers i, j, k such that i+j >= k. In this example, they are chosen as 200, 300 and 500.
N3 format is informative.
DLPremises: <description-logic/premises903>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/premises903" >

  <owl:ObjectProperty rdf:ID="r"/>
  <owl:ObjectProperty rdf:ID="p">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="A"/>
    </rdfs:range>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="q">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="B"/>
    </rdfs:range>
  </owl:ObjectProperty>
  <owl:Class rdf:about="#A">
    <owl:disjointWith rdf:resource="#B"/>
  </owl:Class>

</rdf:RDF>
first:r rdf:type owl:ObjectProperty .
first:p rdf:type owl:ObjectProperty .
first:p rdfs:subPropertyOf first:r .
first:A rdf:type owl:Class .
first:p rdfs:range first:A .
first:q rdf:type owl:ObjectProperty .
first:q rdfs:subPropertyOf first:r .
first:B rdf:type owl:Class .
first:q rdfs:range first:B .
first:A rdf:type owl:Class .
first:A owl:disjointWith first:B .
DLConclusions: <description-logic/conclusions903>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:first="http://www.w3.org/2002/03owlt/description-logic/premises903#"
    xmlns:second="http://www.w3.org/2002/03owlt/description-logic/conclusions903#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/conclusions903" >

  <owl:Class>
    <owl:intersectionOf rdf:parseType="Collection">
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises903#p"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >200</owl:minCardinality>
       </owl:Restriction>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises903#q"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >300</owl:minCardinality>
       </owl:Restriction>
    </owl:intersectionOf>
    <rdfs:subClassOf>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises903#r"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >500</owl:minCardinality>
       </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
</rdf:RDF>
_:a rdf:type owl:Class .
_:c rdf:type owl:Restriction .
first:p rdf:type owl:ObjectProperty .
_:c owl:onProperty first:p .
_:c owl:minCardinality "200"^^xsd:nonNegativeInteger  .
_:e rdf:type owl:Restriction .
first:q rdf:type owl:ObjectProperty .
_:e owl:onProperty first:q .
_:e owl:minCardinality "300"^^xsd:nonNegativeInteger  .
_:g rdf:first _:e .
_:g rdf:rest rdf:nil .
_:i rdf:first _:c .
_:i rdf:rest _:g .
_:a owl:intersectionOf _:i .
_:k rdf:type owl:Restriction .
first:r rdf:type owl:ObjectProperty .
_:k owl:onProperty first:r .
_:k owl:minCardinality "500"^^xsd:nonNegativeInteger  .
_:a rdfs:subClassOf _:k .

DL Full Negative Entailment Test:904
Description: (informative) <description-logic/Manifest904#test>
This non-entailment can be replicated for any three natural numbers i, j, k such that i+j < k. In this example, they are chosen as 200, 300 and 600.
N3 format is informative.
DLPremises: <description-logic/premises904>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/premises904" >

  <owl:ObjectProperty rdf:ID="r"/>
  <owl:ObjectProperty rdf:ID="p">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="A"/>
    </rdfs:range>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="q">
    <rdfs:subPropertyOf rdf:resource="#r"/>
    <rdfs:range>
      <owl:Class rdf:ID="B"/>
    </rdfs:range>
  </owl:ObjectProperty>
  <owl:Class rdf:about="#A">
    <owl:disjointWith rdf:resource="#B"/>
  </owl:Class>

</rdf:RDF>
first:r rdf:type owl:ObjectProperty .
first:p rdf:type owl:ObjectProperty .
first:p rdfs:subPropertyOf first:r .
first:A rdf:type owl:Class .
first:p rdfs:range first:A .
first:q rdf:type owl:ObjectProperty .
first:q rdfs:subPropertyOf first:r .
first:B rdf:type owl:Class .
first:q rdfs:range first:B .
first:A rdf:type owl:Class .
first:A owl:disjointWith first:B .
DLConclusions: <description-logic/nonconclusions904>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/nonconclusions904" >

  <owl:Class>
    <owl:intersectionOf rdf:parseType="Collection">
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises904#p"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >200</owl:minCardinality>
       </owl:Restriction>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises904#q"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >300</owl:minCardinality>
       </owl:Restriction>
    </owl:intersectionOf>
    <rdfs:subClassOf>
       <owl:Restriction>
          <owl:onProperty>
            <owl:ObjectProperty rdf:about="premises904#r"/>
          </owl:onProperty>
          <owl:minCardinality rdf:datatype=
"http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
          >600</owl:minCardinality>
       </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
</rdf:RDF>
_:a rdf:type owl:Class .
_:c rdf:type owl:Restriction .
first:p rdf:type owl:ObjectProperty .
_:c owl:onProperty first:p .
_:c owl:minCardinality "200"^^xsd:nonNegativeInteger  .
_:e rdf:type owl:Restriction .
first:q rdf:type owl:ObjectProperty .
_:e owl:onProperty first:q .
_:e owl:minCardinality "300"^^xsd:nonNegativeInteger  .
_:g rdf:first _:e .
_:g rdf:rest rdf:nil .
_:i rdf:first _:c .
_:i rdf:rest _:g .
_:a owl:intersectionOf _:i .
_:k rdf:type owl:Restriction .
first:r rdf:type owl:ObjectProperty .
_:k owl:onProperty first:r .
_:k owl:minCardinality "600"^^xsd:nonNegativeInteger  .
_:a rdfs:subClassOf _:k .

DL Full (EC) Consistent document.905
Description: (informative) <description-logic/Manifest905#test>
This test shows integer multiplication in OWL DL.
N is 2. M is 3. N times M is 6.
N3 format is informative.
DLConsistent: <description-logic/consistent905>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/consistent905" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
    <owl:Class rdf:ID="only-d">
      <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:ID="d"/>
      </owl:oneOf>
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >2</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >6</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#only-d"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >3</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#only-d"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:only-d .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:only-d .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:only-d rdf:type owl:Class .
first:d rdf:type owl:Thing .
_:a rdf:first first:d .
_:a rdf:rest rdf:nil .
first:only-d owl:oneOf _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invP-1-to-N .
_:c owl:cardinality "2"^^xsd:integer  .
first:only-d owl:equivalentClass _:c .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:invR-N-times-M-to-1 .
_:e owl:cardinality "6"^^xsd:integer  .
first:only-d owl:equivalentClass _:e .
first:cardinality-N rdf:type owl:Class .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:p-N-to-1 .
_:g owl:someValuesFrom first:only-d .
first:cardinality-N owl:equivalentClass _:g .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:invQ-1-to-M .
_:i owl:cardinality "3"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:i .
first:cardinality-N-times-M rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:q-M-to-1 .
_:k owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:k .
first:cardinality-N-times-M rdf:type owl:Class .
_:m rdf:type owl:Restriction .
_:m owl:onProperty first:r-N-times-M-to-1 .
_:m owl:someValuesFrom first:only-d .
first:cardinality-N-times-M owl:equivalentClass _:m .

DL Full (EC) Consistent document.906
Description: (informative) <description-logic/Manifest906#test>
This test shows integer multiplication in OWL DL.
N is 20. M is 30. N times M is 600.
N3 format is informative.
DLConsistent: <description-logic/consistent906>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/consistent906" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
    <owl:Class rdf:ID="only-d">
      <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:ID="d"/>
      </owl:oneOf>
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >20</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >600</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#only-d"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >30</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#only-d"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:only-d .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:only-d .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:only-d rdf:type owl:Class .
first:d rdf:type owl:Thing .
_:a rdf:first first:d .
_:a rdf:rest rdf:nil .
first:only-d owl:oneOf _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invP-1-to-N .
_:c owl:cardinality "20"^^xsd:integer  .
first:only-d owl:equivalentClass _:c .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:invR-N-times-M-to-1 .
_:e owl:cardinality "600"^^xsd:integer  .
first:only-d owl:equivalentClass _:e .
first:cardinality-N rdf:type owl:Class .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:p-N-to-1 .
_:g owl:someValuesFrom first:only-d .
first:cardinality-N owl:equivalentClass _:g .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:invQ-1-to-M .
_:i owl:cardinality "30"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:i .
first:cardinality-N-times-M rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:q-M-to-1 .
_:k owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:k .
first:cardinality-N-times-M rdf:type owl:Class .
_:m rdf:type owl:Restriction .
_:m owl:onProperty first:r-N-times-M-to-1 .
_:m owl:someValuesFrom first:only-d .
first:cardinality-N-times-M owl:equivalentClass _:m .

DL Full (EC) Consistent document.907
Description: (informative) <description-logic/Manifest907#test>
This test shows integer multiplication in OWL DL.
N is 200. M is 300. N times M is 60000.
N3 format is informative.
DLConsistent: <description-logic/consistent907>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/consistent907" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
    <owl:Class rdf:ID="only-d">
      <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:ID="d"/>
      </owl:oneOf>
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >200</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >60000</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#only-d"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >300</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#only-d"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:only-d .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:only-d .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:only-d rdf:type owl:Class .
first:d rdf:type owl:Thing .
_:a rdf:first first:d .
_:a rdf:rest rdf:nil .
first:only-d owl:oneOf _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invP-1-to-N .
_:c owl:cardinality "200"^^xsd:integer  .
first:only-d owl:equivalentClass _:c .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:invR-N-times-M-to-1 .
_:e owl:cardinality "60000"^^xsd:integer  .
first:only-d owl:equivalentClass _:e .
first:cardinality-N rdf:type owl:Class .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:p-N-to-1 .
_:g owl:someValuesFrom first:only-d .
first:cardinality-N owl:equivalentClass _:g .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:invQ-1-to-M .
_:i owl:cardinality "300"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:i .
first:cardinality-N-times-M rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:q-M-to-1 .
_:k owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:k .
first:cardinality-N-times-M rdf:type owl:Class .
_:m rdf:type owl:Restriction .
_:m owl:onProperty first:r-N-times-M-to-1 .
_:m owl:someValuesFrom first:only-d .
first:cardinality-N-times-M owl:equivalentClass _:m .

DL Full Consistent document.908
Description: (informative) <description-logic/Manifest908#test>
This test shows integer multiplication in OWL DL, interacting with infinity.
N times infinity is 2 times infinity. M times infinity is 3 times infinity. N times M times infinity is 5 times infinity.
N3 format is informative.
DLConsistent: <description-logic/consistent908>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/consistent908" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#infinite" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#infinite" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
    <owl:Class rdf:ID="infinite">
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >2</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >5</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#infinite"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >3</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#infinite"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:infinite .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:infinite .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:infinite rdf:type owl:Class .
_:a rdf:type owl:Restriction .
_:a owl:onProperty first:invP-1-to-N .
_:a owl:cardinality "2"^^xsd:integer  .
first:infinite owl:equivalentClass _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invR-N-times-M-to-1 .
_:c owl:cardinality "5"^^xsd:integer  .
first:infinite owl:equivalentClass _:c .
first:cardinality-N rdf:type owl:Class .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:p-N-to-1 .
_:e owl:someValuesFrom first:infinite .
first:cardinality-N owl:equivalentClass _:e .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:invQ-1-to-M .
_:g owl:cardinality "3"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:g .
first:cardinality-N-times-M rdf:type owl:Class .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:q-M-to-1 .
_:i owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:i .
first:cardinality-N-times-M rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:r-N-times-M-to-1 .
_:k owl:someValuesFrom first:infinite .
first:cardinality-N-times-M owl:equivalentClass _:k .

DL Full Inconsistent document.909
Description: (informative) <description-logic/Manifest909#test>
This test shows integer multiplication in OWL DL.
For some finite K, N times K is 2 times K. M times K is 3 times K. N times M times K is not 5 times K.
N3 format is informative.
DLInconsistent: <description-logic/inconsistent909>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/inconsistent909" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#finite" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#finite" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
   <owl:FunctionalProperty rdf:ID="f-K-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invF-1-to-K" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#finite" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#f-K-to-1" />

   <owl:Class rdf:ID="only-d">
      <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:ID="d"/>
      </owl:oneOf>
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invF-1-to-K"/>
          <owl:maxCardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >1000000000</owl:maxCardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="finite">
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >2</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >5</owl:cardinality>

       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#f-K-to-1"/>
            <owl:someValuesFrom rdf:resource="#only-d"/>
          </owl:Restriction>
       </owl:equivalentClass>

        </owl:Restriction>
      </owl:equivalentClass>


    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#finite"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >3</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#finite"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:finite .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:finite .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:f-K-to-1 rdf:type owl:FunctionalProperty .
first:invF-1-to-K rdf:type owl:ObjectProperty .
first:f-K-to-1 owl:inverseOf first:invF-1-to-K .
first:f-K-to-1 rdfs:domain first:finite .
first:f-K-to-1 rdfs:range first:only-d .
first:f-K-to-1 rdf:type owl:ObjectProperty .
first:only-d rdf:type owl:Class .
first:d rdf:type owl:Thing .
_:a rdf:first first:d .
_:a rdf:rest rdf:nil .
first:only-d owl:oneOf _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invF-1-to-K .
_:c owl:maxCardinality "1000000000"^^xsd:integer  .
first:only-d owl:equivalentClass _:c .
first:finite rdf:type owl:Class .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:invP-1-to-N .
_:e owl:cardinality "2"^^xsd:integer  .
first:finite owl:equivalentClass _:e .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:invR-N-times-M-to-1 .
_:g owl:cardinality "5"^^xsd:integer  .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:f-K-to-1 .
_:i owl:someValuesFrom first:only-d .
_:g owl:equivalentClass _:i .
first:finite owl:equivalentClass _:g .
first:cardinality-N rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:p-N-to-1 .
_:k owl:someValuesFrom first:finite .
first:cardinality-N owl:equivalentClass _:k .
_:m rdf:type owl:Restriction .
_:m owl:onProperty first:invQ-1-to-M .
_:m owl:cardinality "3"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:m .
first:cardinality-N-times-M rdf:type owl:Class .
_:o rdf:type owl:Restriction .
_:o owl:onProperty first:q-M-to-1 .
_:o owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:o .
first:cardinality-N-times-M rdf:type owl:Class .
_:q rdf:type owl:Restriction .
_:q owl:onProperty first:r-N-times-M-to-1 .
_:q owl:someValuesFrom first:finite .
first:cardinality-N-times-M owl:equivalentClass _:q .

DL Full (EC) Inconsistent document.910
Description: (informative) <description-logic/Manifest910#test>
This test shows integer multiplication in OWL DL.
N is 20. M is 30. N times M is not 601.
N3 format is informative.
DLInconsistent: <description-logic/inconsistent910>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#"
    xml:base="http://www.w3.org/2002/03owlt/description-logic/inconsistent910" >

   <owl:FunctionalProperty rdf:ID="p-N-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty rdf:ID="invP-1-to-N" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#p-N-to-1" />

   <owl:FunctionalProperty rdf:ID="q-M-to-1" >
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invQ-1-to-M" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#cardinality-N" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#q-M-to-1" />

   <owl:FunctionalProperty rdf:ID="r-N-times-M-to-1">
     <owl:inverseOf>
        <owl:ObjectProperty  rdf:ID="invR-N-times-M-to-1" />
     </owl:inverseOf>
     <rdfs:domain rdf:resource="#cardinality-N-times-M" />
     <rdfs:range rdf:resource="#only-d" />
   </owl:FunctionalProperty>
   <owl:ObjectProperty rdf:about="#r-N-times-M-to-1"/>
  
    <owl:Class rdf:ID="only-d">
      <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:ID="d"/>
      </owl:oneOf>
      <owl:equivalentClass>
        <owl:Restriction>
          <owl:onProperty rdf:resource="#invP-1-to-N"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >20</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>

      <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#invR-N-times-M-to-1"/>
          <owl:cardinality rdf:datatype=
            "http://www.w3.org/2001/XMLSchema#integer"
           >601</owl:cardinality>
        </owl:Restriction>
      </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N">
       <owl:equivalentClass>
         <owl:Restriction>
           <owl:onProperty rdf:resource="#p-N-to-1"/>
           <owl:someValuesFrom rdf:resource="#only-d"/>
         </owl:Restriction>
       </owl:equivalentClass>
       <owl:equivalentClass>
         <owl:Restriction>
             <owl:onProperty rdf:resource="#invQ-1-to-M"/>
             <owl:cardinality rdf:datatype=
               "http://www.w3.org/2001/XMLSchema#integer"
              >30</owl:cardinality>
         </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>

    <owl:Class rdf:ID="cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#q-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#cardinality-N"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


    <owl:Class rdf:about="#cardinality-N-times-M">
       <owl:equivalentClass>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#r-N-times-M-to-1"/>
            <owl:someValuesFrom rdf:resource="#only-d"/>
          </owl:Restriction>
       </owl:equivalentClass>
    </owl:Class>


</rdf:RDF>
first:p-N-to-1 rdf:type owl:FunctionalProperty .
first:invP-1-to-N rdf:type owl:ObjectProperty .
first:p-N-to-1 owl:inverseOf first:invP-1-to-N .
first:p-N-to-1 rdfs:domain first:cardinality-N .
first:p-N-to-1 rdfs:range first:only-d .
first:p-N-to-1 rdf:type owl:ObjectProperty .
first:q-M-to-1 rdf:type owl:FunctionalProperty .
first:invQ-1-to-M rdf:type owl:ObjectProperty .
first:q-M-to-1 owl:inverseOf first:invQ-1-to-M .
first:q-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:q-M-to-1 rdfs:range first:cardinality-N .
first:q-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 rdf:type owl:FunctionalProperty .
first:invR-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:r-N-times-M-to-1 owl:inverseOf first:invR-N-times-M-to-1 .
first:r-N-times-M-to-1 rdfs:domain first:cardinality-N-times-M .
first:r-N-times-M-to-1 rdfs:range first:only-d .
first:r-N-times-M-to-1 rdf:type owl:ObjectProperty .
first:only-d rdf:type owl:Class .
first:d rdf:type owl:Thing .
_:a rdf:first first:d .
_:a rdf:rest rdf:nil .
first:only-d owl:oneOf _:a .
_:c rdf:type owl:Restriction .
_:c owl:onProperty first:invP-1-to-N .
_:c owl:cardinality "20"^^xsd:integer  .
first:only-d owl:equivalentClass _:c .
_:e rdf:type owl:Restriction .
_:e owl:onProperty first:invR-N-times-M-to-1 .
_:e owl:cardinality "601"^^xsd:integer  .
first:only-d owl:equivalentClass _:e .
first:cardinality-N rdf:type owl:Class .
_:g rdf:type owl:Restriction .
_:g owl:onProperty first:p-N-to-1 .
_:g owl:someValuesFrom first:only-d .
first:cardinality-N owl:equivalentClass _:g .
_:i rdf:type owl:Restriction .
_:i owl:onProperty first:invQ-1-to-M .
_:i owl:cardinality "30"^^xsd:integer  .
first:cardinality-N owl:equivalentClass _:i .
first:cardinality-N-times-M rdf:type owl:Class .
_:k rdf:type owl:Restriction .
_:k owl:onProperty first:q-M-to-1 .
_:k owl:someValuesFrom first:cardinality-N .
first:cardinality-N-times-M owl:equivalentClass _:k .
first:cardinality-N-times-M rdf:type owl:Class .
_:m rdf:type owl:Restriction .
_:m owl:onProperty first:r-N-times-M-to-1 .
_:m owl:someValuesFrom first:only-d .
first:cardinality-N-times-M owl:equivalentClass _:m .


previous next top contents index