S-TEN/D3.1/annex 4 STEP-derived Ontology used for the technical validation

From WikiSTEP

Jump to: navigation, search
<?xml version="1.0"?>

 <!DOCTYPE rdf:RDF [
   <!ENTITY iso31   "http://www.s-ten.net/iso31.owl#">
   <!ENTITY iso1000 "http://www.s-ten.net/iso1000.owl#">
   <!ENTITY owl     "http://www.w3.org/2002/07/owl#">
   <!ENTITY step    "http://www.s-ten.net/d3_1_basic_step_ontology.owl#">
   <!ENTITY xsd     "http://www.w3.org/2001/XMLSchema#">
   <!ENTITY rdfs    "http://www.w3.org/2000/01/rdf-schema#">
 ]>

 <rdf:RDF
    xmlns      ="&step;" 
    xmlns:step ="&step;"
    xmlns:iso31 ="&iso31;"
    xmlns:iso1000 ="&iso1000;"
    xmlns:owl  ="http://www.w3.org/2002/07/owl#"
    xmlns:rdf  ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs ="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:xsd  ="http://www.w3.org/2001/XMLSchema#"
    xml:base   ="http://www.s-ten.net/d3_1_basic_step_ontology.owl"
  >

  <owl:Ontology rdf:about=""> 
    <owl:imports> 
      <owl:Ontology rdf:about="&iso31;"/> 
    </owl:imports> 
  </owl:Ontology>

<!-- basic types from the support_resource_schema in ISO 10303-41 -->

<owl:DatatypeProperty rdf:ID="label">
  <rdfs:range rdf:resource="&xsd;string"/>
  <rdfs:comment>XA label is an alphanumeric string that represents the human-interpretable name of something and shall have a natural-language meaning.</rdfs:comment>
</owl:DatatypeProperty>

<owl:DatatypeProperty rdf:ID="text">
  <rdfs:range rdf:resource="&xsd;string"/>
  <rdfs:comment>A text is an alphanumeric string intended to be read and understood by a human being. It is for information purposes only.</rdfs:comment>
</owl:DatatypeProperty>

<owl:DatatypeProperty rdf:ID="identifier">
  <rdfs:range rdf:resource="&xsd;string"/>
  <rdfs:comment>An identifier is a string suitable for identifying some product data.</rdfs:comment>
</owl:DatatypeProperty>


<!-- typical string attributes used in many STEP Express schemas-->

 <owl:DatatypeProperty rdf:ID="id">
   <rdfs:subPropertyOf rdf:resource="#identifier"/>
 </owl:DatatypeProperty>

 <owl:DatatypeProperty rdf:ID="version_id">
   <rdfs:subPropertyOf rdf:resource="#identifier"/>
 </owl:DatatypeProperty>

 <owl:DatatypeProperty rdf:ID="name">
   <rdfs:subPropertyOf rdf:resource="#label"/>
 </owl:DatatypeProperty>

 <owl:DatatypeProperty rdf:ID="role">
   <rdfs:subPropertyOf rdf:resource="#label"/>
 </owl:DatatypeProperty>

 <owl:DatatypeProperty rdf:ID="description">
   <rdfs:subPropertyOf rdf:resource="#text"/>
 </owl:DatatypeProperty>

<!-- Definition of meta levels --> 

<owl:Class rdf:about="#Physical_object">
  <rdfs:subClassOf rdf:resource="&owl;Class"/>
</owl:Class>

<owl:Class rdf:about="#Class_of_physical_object">
 <owl:equivalentClass>
  <owl:Restriction>
   <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
   <owl:hasValue rdf:resource="#Physical_object"/>
  </owl:Restriction>
 </owl:equivalentClass>
</owl:Class>

<owl:Class rdf:about="#Class_of_class_of_physical_object">
 <owl:equivalentClass>
  <owl:Restriction>
   <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
   <owl:hasValue rdf:resource="#Class_of_physical_object"/>
  </owl:Restriction>
 </owl:equivalentClass>
</owl:Class>

 <!-- individuals of type Class_of_class_of_physical_object -->

  <Class_of_class_of_physical_object rdf:ID="Product_class">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
  </Class_of_class_of_physical_object>
  <owl:DatatypeProperty rdf:ID="market">
    <rdfs:subPropertyOf rdf:resource="#name"/>
    <rdfs:domain rdf:resource='#Product_class'/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <Class_of_class_of_physical_object rdf:ID="Product_specification">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
    <rdfs:subClassOf>
     <owl:Restriction>
      <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
      <owl:allValuesFrom rdf:resource="#Product_class"/>
     </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="#Product_class"/>
  </Class_of_class_of_physical_object>
 
  <Class_of_class_of_physical_object rdf:ID="Part">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
    <owl:disjointWith rdf:resource="#Product_class"/>
    <owl:disjointWith rdf:resource="#Product_specification"/>
  </Class_of_class_of_physical_object>

  <Class_of_class_of_physical_object rdf:ID="Part_version">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
    <rdfs:subClassOf>
     <owl:Restriction>
      <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
      <owl:allValuesFrom rdf:resource="#Part"/>
     </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="#Product_class"/>
    <owl:disjointWith rdf:resource="#Product_specification"/>
    <owl:disjointWith rdf:resource="#Part"/>
  </Class_of_class_of_physical_object>
  <owl:ObjectProperty rdf:ID='part_version_predecessor'>
    <rdf:type rdf:resource="&owl;TransitiveProperty" />
    <rdfs:domain rdf:resource='#Part_version'/>
    <rdfs:range rdf:resource='#Part_version'/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID='part_version_successor'>
    <owl:inverseOf rdf:resource='#part_version_predecessor'/>
    <rdfs:domain rdf:resource='#Part_version'/>
    <rdfs:range rdf:resource='#Part_version'/>
  </owl:ObjectProperty>

  <Class_of_class_of_physical_object rdf:ID="Part_view_definition">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
    <owl:disjointWith rdf:resource="#Product_class"/>
    <owl:disjointWith rdf:resource="#Product_specification"/>
    <owl:disjointWith rdf:resource="#Part"/>
    <owl:disjointWith rdf:resource="#Part_version"/>
  </Class_of_class_of_physical_object>

  <Class_of_class_of_physical_object rdf:ID="Part_occurence">
    <rdfs:subClassOf rdf:resource="#Class_of_physical_object"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
        <owl:allValuesFrom rdf:resource="#Part_version"/>
      </owl:Restriction>
    </rdfs:subClassOf> 
    <owl:disjointWith rdf:resource="#Product_class"/>
    <owl:disjointWith rdf:resource="#Product_specification"/>
    <owl:disjointWith rdf:resource="#Part"/>
    <owl:disjointWith rdf:resource="#Part_version"/>
    <owl:disjointWith rdf:resource="#Part_view_definition"/>
  </Class_of_class_of_physical_object>


 <!-- individuals of type Class_of_physical_object -->

  <Class_of_physical_object rdf:ID="Product_as_individual">
    <rdfs:subClassOf rdf:resource="#Physical_object"/>
  </Class_of_physical_object>

<owl:Class rdf:about="#ClassOf_Product_as_individual">
 <owl:equivalentClass>
  <owl:Restriction>
   <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
   <owl:hasValue rdf:resource="#Product_as_individual"/>
  </owl:Restriction>
 </owl:equivalentClass>
</owl:Class>

  <Class_of_physical_object rdf:ID="Product_as_individual_version">
    <owl:unionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Product_as_planned" />
      <owl:Class rdf:about="#Product_as_realized" />
    </owl:unionOf>
  </Class_of_physical_object>

  <Class_of_physical_object rdf:ID="Product_as_planned">
    <rdfs:subClassOf rdf:resource="#Product_as_individual"/>
  </Class_of_physical_object>

  <Class_of_physical_object rdf:ID="Product_as_realized">
    <rdfs:subClassOf rdf:resource="#Product_as_individual"/>
    <owl:disjointWith rdf:resource="#Product_as_planned"/>
  </Class_of_physical_object>

  <owl:ObjectProperty rdf:ID='temporal_part'>
    <rdfs:domain rdf:resource='#Product_as_individual_version'/>
    <rdfs:range rdf:resource='#Product_as_individual'/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID='physical_assembly_relationship'>
    <rdfs:domain rdf:resource='#Product_as_individual_version'/>
    <rdfs:range rdf:resource='#Product_as_individual_version'/>
  </owl:ObjectProperty>

  <owl:Class rdf:about="#Physical_property_of_product_as_individual">
   <owl:equivalentClass>
    <owl:Class>
     <owl:intersectionOf rdf:parseType="Collection"/>
      <owl:Restriction>
       <owl:onProperty rdf:resource="&rdfs;domain"/>
       <owl:allValuesFrom>
        <owl:Restriction>
         <owl:onProperty rdf:resource="&rdfs;subClassOf"/>
         <owl:hasValue rdf:resource="&step;Product_as_individual"/>
        </owl:Restriction>
       </owl:allValuesFrom>
      </owl:Restriction>
      <owl:Restriction>
       <owl:onProperty rdf:resource="&rdfs;range"/>
       <owl:allValuesFrom rdf:resource="&iso31;Physical_quantity_type"/>
      </owl:Restriction>
     </owl:intersectionOf>
    </owl:Class>
   </owl:equivalentClass>
  </owl:Class> 

  <Class_of_physical_object rdf:ID="Person">
    <rdfs:subClassOf rdf:resource="#Physical_object"/>
  </Class_of_physical_object>
  <Class_of_physical_object rdf:ID="Organization">
    <rdfs:subClassOf rdf:resource="#Physical_object"/>
  </Class_of_physical_object>

  <owl:DatatypeProperty rdf:ID="last_name">
    <rdfs:subPropertyOf rdf:resource="#label"/>
    <rdfs:domain rdf:resource="#Person"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="first_name">
    <rdfs:subPropertyOf rdf:resource="#label"/>
    <rdfs:domain rdf:resource="#Person"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="middle_name">
    <rdfs:subPropertyOf rdf:resource="#label"/>
    <rdfs:domain rdf:resource="#Person"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="prefix_title">
    <rdfs:subPropertyOf rdf:resource="#label"/>
    <rdfs:domain rdf:resource="#Person"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="suffix_title">
    <rdfs:subPropertyOf rdf:resource="#label"/>
    <rdfs:domain rdf:resource="#Person"/>
  </owl:DatatypeProperty>

  <Class_of_physical_object rdf:ID="Person_and_organization">
    <rdfs:subClassOf rdf:resource="#Physical_object"/>
  </Class_of_physical_object>
  <owl:ObjectProperty rdf:ID="the_person">
    <rdfs:domain rdf:resource="#Person_and_organization"/>
    <rdfs:range rdf:resource="#Person"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="the_organization">
    <rdfs:domain rdf:resource="#Person_and_organization"/>
    <rdfs:range rdf:resource="#Organization"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="id_owner_assignment">
    <rdfs:range rdf:resource="#Person_and_organization"/>
  </owl:ObjectProperty>

<!-- others -->

  <owl:Class rdf:ID="Property">
  </owl:Class>

  <owl:Class rdf:ID="PropertyValue">
  </owl:Class>

  <owl:ObjectProperty rdf:ID='propertyRepresentation'>
    <rdfs:domain rdf:resource='#PropertyValue'/>
    <!--rdfs:range rdf:resource='#Part_version'/-->
  </owl:ObjectProperty>

  <owl:Class rdf:ID='Next_assembly_usage_occurrence'>
  </owl:Class>

  <owl:ObjectProperty rdf:ID='nextAssemblyUsageOccurrenceDefinition'>
    <rdfs:domain rdf:resource='#Next_assembly_usage_occurrence'/>
    <rdfs:range rdf:resource='#Part_occurence'/>
  </owl:ObjectProperty>

 </rdf:RDF>
Personal tools