<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
  <!ENTITY foaf "http://xmlns.com/foaf/0.1/">
  <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">
  <!ENTITY owl "http://www.w3.org/2002/07/owl#">
  <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">
]>

<rdf:RDF 
    xmlns:rdf="&rdf;"
    xmlns:rdfs="&rdfs;"
    xmlns:owl="&owl;"
    xml:base="http://www.mindswap.org/2004/owl/funding#"
>

<owl:Ontology rdf:about="">

</owl:Ontology>

<owl:Class rdf:ID="Organization">
  <rdfs:label>Organization</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Business">
  <rdfs:label>Business</rdfs:label>
  <rdfs:subClassOf rdf:resource="#Organization"/>
</owl:Class>

<owl:Class rdf:ID="Government">
  <rdfs:label>Government</rdfs:label>
  <rdfs:subClassOf rdf:resource="#Organization"/>
</owl:Class>

<owl:Class rdf:ID="Funder" rdfs:label="Funding Organization">
  <rdfs:subClassOf rdf:resource="#Organization"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Organization"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#funds"/>
      <owl:someValuesFrom rdf:resource="#Funding"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="Fundee" rdfs:label="Funded Organization">
  <rdfs:subClassOf rdf:resource="#Organization"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Organization"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#fundedBy"/>
      <owl:someValuesFrom rdf:resource="#Funding"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="Funding" rdfs:label="Funding">
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Restriction>
      <owl:onProperty rdf:resource="#source"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#destination"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="BusinessFunding" rdfs:label="Business Funding">
  <rdfs:subClassOf rdf:resource="#Funding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Funding"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#source"/>
      <owl:someValuesFrom rdf:resource="#Business"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="B2BFunding" rdfs:label="Business to Business Funding">
  <rdfs:subClassOf rdf:resource="#BusinessFunding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#BusinessFunding"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#destination"/>
      <owl:someValuesFrom rdf:resource="#Business"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="GovernmentFunding" rdfs:label="Government Funding">
  <rdfs:subClassOf rdf:resource="#Funding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Funding"/>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#source"/>
      <owl:someValuesFrom rdf:resource="#Government"/>
    </owl:Restriction>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="Grant" rdfs:label="Grant">
  <rdfs:subClassOf rdf:resource="#Funding"/>
</owl:Class>

<owl:Class rdf:ID="BusinessGrant" rdfs:label="Business Grant">
  <rdfs:subClassOf rdf:resource="#Grant"/>
  <rdfs:subClassOf rdf:resource="#BusinessFunding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Grant"/>
    <owl:Class rdf:about="#BusinessFunding"/>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="GovernmentGrant" rdfs:label="Government Grant">
  <rdfs:subClassOf rdf:resource="#Grant"/>
  <rdfs:subClassOf rdf:resource="#GovernmentFunding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Grant"/>
    <owl:Class rdf:about="#GovernmentFunding"/>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="Contract" rdfs:label="Contract">
  <rdfs:subClassOf rdf:resource="#Funding"/>
</owl:Class>

<owl:Class rdf:ID="BusinessContract" rdfs:label="Business Contract">
  <rdfs:subClassOf rdf:resource="#Contract"/>
  <rdfs:subClassOf rdf:resource="#BusinessFunding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Contract"/>
    <owl:Class rdf:about="#BusinessFunding"/>
  </owl:intersectionOf>
</owl:Class>
    
<owl:Class rdf:ID="GovernmentContract" rdfs:label="Government Contract">
  <rdfs:subClassOf rdf:resource="#Contract"/>
  <rdfs:subClassOf rdf:resource="#GovernmentFunding"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Contract"/>
    <owl:Class rdf:about="#GovernmentFunding"/>
  </owl:intersectionOf>
</owl:Class>


<!-- Properties -->
<owl:ObjectProperty rdf:ID="source"/>
<owl:ObjectProperty rdf:ID="destination"/>

<owl:ObjectProperty rdf:ID="funds">
  <owl:inverseOf rdf:resource="#source"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="fundedBy">
  <owl:inverseOf rdf:resource="#destination"/>
</owl:ObjectProperty>

<owl:DatatypeProperty rdf:ID="name" rdfs:label="name"/>
<owl:InverseFunctionalProperty rdf:ID="logo" rdfs:label="logo"/>
<owl:InverseFunctionalProperty rdf:ID="homepage" rdfs:label="homepage"/>

</rdf:RDF>
