<?xml version="1.0" encoding="UTF-8"?>

<!--
   This file contains RDF encoding of a portion of the UML package Foundation / Data Types
   that is needed to validate Foundation / Core.
   Reference: UML 1.3 (ftp://ftp.omg.org/pub/docs/ad/99-06-08.pdf), page 111

   Author: Sergey Melnik (melnik@db.stanford.edu)
   Source: http://www-db.stanford.edu/~melnik/rdf/uml/
   Last modified: May 07, 2000

-->
   

<!DOCTYPE rdf:RDF [
 <!ENTITY rdf  'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <!ENTITY c 'http://www.omg.org/uml/1.3/Foundation.Core.'>
 <!ENTITY d 'http://www.omg.org/uml/1.3/Foundation.Data_Types.'>
]>

<rdf:RDF
   xmlns:rdf="&rdf;"
   xmlns:c="&c;"
   xmlns:d="&d;"
   xmlns="&d;"
>

<!-- ==================== classes and types ====================== -->

<c:DataType rdf:ID="&d;Integer"/>

<c:DataType rdf:ID="&d;UnlimitedInteger"/>
<d:UnlimitedInteger rdf:ID="&d;UnlimitedInteger.*"/>

<c:DataType rdf:ID="&d;String"/>

<c:DataType rdf:ID="&d;Time"/>

<c:DataType rdf:ID="&d;AggregationKind"/>

<d:AggregationKind rdf:ID="&d;AggregationKind.none"/>
<d:AggregationKind rdf:ID="&d;AggregationKind.composite"/>
<d:AggregationKind rdf:ID="&d;AggregationKind.aggregate"/>


<c:DataType rdf:ID="&d;ScopeKind"/>

<d:ScopeKind rdf:ID="&d;ScopeKind.instance"/>
<d:ScopeKind rdf:ID="&d;ScopeKind.classifier"/>


<c:DataType rdf:ID="&d;ChangeableKind"/>

<d:ChangeableKind rdf:ID="&d;ChangeableKind.changeable"/>
<d:ChangeableKind rdf:ID="&d;ChangeableKind.frozen"/>
<d:ChangeableKind rdf:ID="&d;ChangeableKind.addOnly"/>


<c:DataType rdf:ID="&d;CallConcurrencyKind"/>

<d:CallConcurrencyKind rdf:ID="&d;CallConcurrencyKind.sequential"/>
<d:CallConcurrencyKind rdf:ID="&d;CallConcurrencyKind.guarded"/>
<d:CallConcurrencyKind rdf:ID="&d;CallConcurrencyKind.concurrent"/>


<c:DataType rdf:ID="&d;OrderingKind"/>

<d:OrderingKind rdf:ID="&d;OrderingKind.ordered"/>
<d:OrderingKind rdf:ID="&d;OrderingKind.unordered"/>


<c:DataType rdf:ID="&d;VisibilityKind"/>

<d:VisibilityKind rdf:ID="&d;VisibilityKind.public"/>
<d:VisibilityKind rdf:ID="&d;VisibilityKind.protected"/>
<d:VisibilityKind rdf:ID="&d;VisibilityKind.private"/>


<c:DataType rdf:ID="&d;Boolean"/>

<d:Boolean rdf:ID="&d;Boolean.true"/>
<d:Boolean rdf:ID="&d;Boolean.false"/>

<c:DataType rdf:ID="&d;PseudostateKind"/>

<d:PseudostateKind rdf:ID="&d;PseudostateKind.choice"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.deepHistory"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.fork"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.initial"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.join"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.junction"/>
<d:PseudostateKind rdf:ID="&d;PseudostateKind.shallowHistory"/>


<c:DataType rdf:ID="&d;ParameterDirectionKind"/>

<d:ParameterDirectionKind rdf:ID="&d;ParameterDirectionKind.in"/>
<d:ParameterDirectionKind rdf:ID="&d;ParameterDirectionKind.out"/>
<d:ParameterDirectionKind rdf:ID="&d;ParameterDirectionKind.inout"/>
<d:ParameterDirectionKind rdf:ID="&d;ParameterDirectionKind.return"/>


<c:Class rdf:ID="&d;Name">
  <c:Classifier.feature>
    <c:Attribute rdf:ID="&d;Name.body">
      <c:StructuralFeature.type rdf:resource="&d;String"/>
    </c:Attribute>
  </c:Classifier.feature>
</c:Class>

<c:Class rdf:ID="&d;Multiplicity"/>

<c:Class rdf:ID="&d;MultiplicityRange">
  <c:Classifier.feature>
        <c:Attribute rdf:ID="&d;MultiplicityRange.lower">
          <c:StructuralFeature.type rdf:resource="&d;Integer"/>
        </c:Attribute>
  </c:Classifier.feature>
  <c:Classifier.feature>
        <c:Attribute rdf:ID="&d;MultiplicityRange.upper">
          <c:StructuralFeature.type rdf:resource="&d;UnlimitedInteger"/>
        </c:Attribute>
  </c:Classifier.feature>
</c:Class>

<c:Class rdf:ID="&d;Expression">
  <c:Classifier.feature>
        <c:Attribute rdf:ID="&d;Expression.language">
          <c:StructuralFeature.type rdf:resource="&d;Name"/>
        </c:Attribute>
  </c:Classifier.feature>
  <c:Classifier.feature>
        <c:Attribute rdf:ID="&d;Expression.body">
          <c:StructuralFeature.type rdf:resource="&d;String"/>
        </c:Attribute>
  </c:Classifier.feature>
</c:Class>


<!-- EXPRESSIONS -->

<c:Class rdf:ID="&d;Expression"/>


<c:Class rdf:ID="&d;BooleanExpression"/>

<c:Generalization>
  <c:Generalization.child rdf:resource="&d;BooleanExpression"/>
  <c:Generalization.parent rdf:resource="&d;Expression"/>
</c:Generalization>


<c:Class rdf:ID="&d;TimeExpression"/>

<c:Generalization>
  <c:Generalization.child rdf:resource="&d;TimeExpression"/>
  <c:Generalization.parent rdf:resource="&d;Expression"/>
</c:Generalization>


<c:Class rdf:ID="&d;ProcedureExpression"/>

<c:Generalization>
  <c:Generalization.child rdf:resource="&d;ProcedureExpression"/>
  <c:Generalization.parent rdf:resource="&d;Expression"/>
</c:Generalization>


<c:Class rdf:ID="&d;MappingExpression"/>

<c:Generalization>
  <c:Generalization.child rdf:resource="&d;MappingExpression"/>
  <c:Generalization.parent rdf:resource="&d;Expression"/>
</c:Generalization>




<!-- =================== associations ===================== -->

<c:Association>
  <c:Association.connection>
        <c:AssociationEnd>
          <c:AssociationEnd.type rdf:resource="&d;Multiplicity"/>
          <c:AssociationEnd.aggregation rdf:resource="&d;AggregationKind.aggregate"/>
          <c:AssociationEnd.multiplicity rdf:resource="#1-1"/>
        </c:AssociationEnd>
  </c:Association.connection>
  <c:Association.connection>
        <c:AssociationEnd rdf:ID="&d;Multiplicity.range">
          <c:AssociationEnd.type rdf:resource="&d;MultiplicityRange"/>
          <c:AssociationEnd.multiplicity rdf:resource="#1-*"/>
        </c:AssociationEnd>
  </c:Association.connection>
</c:Association>



<!-- =================== some convenient abbreviations ===================== -->

<d:Multiplicity rdf:ID="1-*">
  <d:Multiplicity.range>
    <d:MultiplicityRange>
      <d:MultiplicityRange.lower>1</d:MultiplicityRange.lower>
      <d:MultiplicityRange.upper rdf:resource="&d;UnlimitedInteger.*"/>
    </d:MultiplicityRange>
  </d:Multiplicity.range>
</d:Multiplicity>

<d:Multiplicity rdf:ID="1-1">
  <d:Multiplicity.range>
    <d:MultiplicityRange>
      <d:MultiplicityRange.lower>1</d:MultiplicityRange.lower>
      <d:MultiplicityRange.upper>1</d:MultiplicityRange.upper>
    </d:MultiplicityRange>
  </d:Multiplicity.range>
</d:Multiplicity>


</rdf:RDF>
