<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
  <!ENTITY sswap 'http://sswapmeet.sswap.info/sswap/'>
  <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
  <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
  <!ENTITY owl 'http://www.w3.org/2002/07/owl#'>
  <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>]>
<rdf:RDF
    xmlns:rdf="&rdf;"
    xmlns:sswap="&sswap;"
    xmlns:owl="&owl;"
    xmlns:xsd="&xsd;"
    xmlns:rdfs="&rdfs;">
    <owl:Ontology rdf:about="&sswap;owlOntology">
        <owl:imports rdf:resource="&sswap;owlOntology"/>
    </owl:Ontology>
    <owl:Class rdf:about="&sswap;Resource"/>
    <owl:Class rdf:about="&sswap;SSWAP"/>
    <owl:Class rdf:about="&sswap;Graph"/>
    <owl:Class rdf:about="&sswap;Provider">
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty>
                    <owl:FunctionalProperty rdf:about="&sswap;oneLineDescription"/>
                </owl:onProperty>
                <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:comment rdf:datatype="&xsd;string">A sswap:Provider designates the provider of one or more resources.

Providers claim ownership of resources and are anticipated to be associated with actual organizations such as W3C, NCBI, etc. Providers may state that they provide multiple resources by using multiple sswap:providesResource properties. The resource that is a sswap:Provider is the URI of the provider's Provider Description Graph (PDG), and separate from the Resource Description Graphs (RDGs) of each service.

The owl:Restriction on sswap:providedBy defines the class so as to prohibit the inferrence that sswap:Provider is a rdfs:subClassOf sswap:Resource. The property sswap:providedBy is not a valid predicate for a sswap:Provide. See sswap:Resource for notes on sswap:providesResource and sswap:providedBy.

        Required predicates: sswap:name;

        Optional predicates: sswap:about, sswap:metadta, sswap:oneLineDescription, sswap:providesResource.</rdfs:comment>
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <owl:Restriction>
                        <owl:cardinality rdf:datatype="&xsd;int"
                        >1</owl:cardinality>
                        <owl:onProperty>
                            <owl:FunctionalProperty rdf:about="&sswap;name"/>
                        </owl:onProperty>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:cardinality rdf:datatype="&xsd;int"
                        >0</owl:cardinality>
                        <owl:onProperty>
                            <owl:FunctionalProperty rdf:about="&sswap;providedBy"/>
                        </owl:onProperty>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:onProperty>
                            <owl:InverseFunctionalProperty rdf:about="&sswap;providesResource"/>
                        </owl:onProperty>
                        <owl:allValuesFrom rdf:resource="&sswap;Resource"/>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
        <rdfs:label rdf:datatype="&xsd;string">Provider</rdfs:label>
        <rdfs:subClassOf rdf:resource="&sswap;SSWAP"/>
        <owl:disjointWith rdf:resource="&sswap;Graph"/>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:minCardinality rdf:datatype="&xsd;int">0</owl:minCardinality>
                <owl:onProperty>
                    <owl:InverseFunctionalProperty rdf:about="&sswap;providesResource"/>
                </owl:onProperty>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty>
                    <owl:DatatypeProperty rdf:about="&sswap;metadata"/>
                </owl:onProperty>
                <owl:minCardinality rdf:datatype="&xsd;int">0</owl:minCardinality>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
                <owl:onProperty>
                    <owl:FunctionalProperty rdf:about="&sswap;aboutURI"/>
                </owl:onProperty>
            </owl:Restriction>
        </rdfs:subClassOf>
    </owl:Class>
    <owl:FunctionalProperty rdf:about="&sswap;aboutURI">
        <rdf:type rdf:resource="&owl;DatatypeProperty"/>
    </owl:FunctionalProperty>
    <owl:FunctionalProperty rdf:about="&sswap;name">
        <rdf:type rdf:resource="&owl;DatatypeProperty"/>
    </owl:FunctionalProperty>
    <owl:FunctionalProperty rdf:about="&sswap;oneLineDescription">
        <rdf:type rdf:resource="&owl;DatatypeProperty"/>
    </owl:FunctionalProperty>
    <owl:FunctionalProperty rdf:about="&sswap;providedBy">
        <rdf:type rdf:resource="&owl;ObjectProperty"/>
    </owl:FunctionalProperty>
    <owl:InverseFunctionalProperty rdf:about="&sswap;providesResource">
        <rdf:type rdf:resource="&owl;ObjectProperty"/>
    </owl:InverseFunctionalProperty>
</rdf:RDF>

