Warning:
This wiki has been archived and is now read-only.

PrimerExampleRDFXML

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

<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY owl11 "http://www.w3.org/2006/12/owl11#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY f "http://example.com/owl/families#" >
    <!ENTITY g "http://example.com/owl2/families#" >
    <!ENTITY dc "http://purl.org/dc/elements/1.1/#" >
 ]>

<rdf:RDF xml:base="http://example.com/owl/families"
     xmlns="http://example.com/owl/families#"
     xmlns:owl="http://www.w3.org/2002/07/owl#"
     xmlns:owl11="http://www.w3.org/2006/12/owl11#"
     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#"
     xmlns:f="http://example.com/owl/families#"
     xmlns:g="http://example.com/owl2/families#"
>
    <owl:Ontology rdf:about="http://example.com/owl/families">
      <owl:imports rdf:resource="http://example.com/owl2/families.owl"/>
    </owl:Ontology>


    <owl:ObjectProperty rdf:about="#hasAncestor">
        <rdf:type rdf:resource="&owl;TransitiveProperty"/>
        <rdf:type rdf:resource="&owl11;IrreflexiveProperty"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#hasChild">
        <rdfs:subPropertyOf rdf:resource="#hasAncestor"/>
        <rdfs:domain rdf:resource="#Person"/>
        <rdfs:range rdf:resource="#Person"/>
        <owl:equivalentProperty rdf:resource="&g;child"/>
    </owl:ObjectProperty>
     
    <owl:ObjectProperty rdf:about="#hasDaughter">
        <rdfs:range>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:hasValue rdf:resource="#female"/>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </rdfs:range>
        <rdfs:range rdf:resource="#Person"/>
        <rdfs:domain rdf:resource="#Person"/>
        <rdfs:subPropertyOf rdf:resource="#hasChild"/>
        <rdfs:domain rdf:resource="#Parent"/>
        <owl11:disjointObjectProperties rdf:resource="#hasSon"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#hasGender"/>
    
    <owl:ObjectProperty rdf:about="#hasHusband">
        <owl:inverseOf rdf:resource="#hasWife"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#hasSon">
        <rdfs:range>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:hasValue rdf:resource="#male"/>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </rdfs:range>
        <rdfs:subPropertyOf rdf:resource="#hasChild"/>
        <rdfs:range rdf:resource="#Person"/>
        <rdfs:domain rdf:resource="#Person"/>
        <rdfs:domain rdf:resource="#Parent"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#hasSpouse">
        <rdf:type rdf:resource="&owl;SymmetricProperty"/>
        <rdf:type rdf:resource="&owl11;IrreflexiveProperty"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#hasWife">
        <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
        <rdf:type rdf:resource="&owl11;AsymmetricProperty"/>
        <rdf:type rdf:resource="&owl11;IrreflexiveProperty"/>
        <rdfs:domain rdf:resource="#Person"/>
        <rdfs:range rdf:resource="#Person"/>
        <rdfs:subPropertyOf rdf:resource="#loves"/>
        <rdfs:range rdf:resource="#Woman"/>
        <rdfs:subPropertyOf rdf:resource="#hasSpouse"/>
        <rdfs:domain rdf:resource="#Man"/>
    </owl:ObjectProperty>
    
    <owl:ObjectProperty rdf:about="#loves">
        <rdfs:domain rdf:resource="#Person"/>
    </owl:ObjectProperty>
    
   
    
    <owl:DatatypeProperty rdf:about="#hasAge">
        <rdf:type rdf:resource="&owl;FunctionalProperty"/>
        <rdfs:domain rdf:resource="#Person"/>
        <rdfs:range rdf:resource="&xsd;integer"/>
        <owl:equivalentProperty rdf:resource="&g;age"/>
    </owl:DatatypeProperty>
    
    
    <owl:Class rdf:about="#Adult">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasAge"/>
                        <owl:someValuesFrom>
                            <rdf:Description>
                                <rdf:type rdf:resource="&owl;DataRange"/>
                                <owl11:onDataRange rdf:resource="&xsd;integer"/>
                                <owl11:minInclusive rdf:datatype="&xsd;int">21</owl11:minInclusive>
                            </rdf:Description>
                        </owl:someValuesFrom>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
        <owl:equivalentClass rdf:resource="&g;Grownup"/>
    </owl:Class>
    
    <owl:Class rdf:about="#Child">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Class>
                        <owl:complementOf>
                            <owl:Restriction>
                                <owl:onProperty rdf:resource="#hasAge"/>
                                <owl:someValuesFrom>
                                    <rdf:Description>
                                        <rdf:type rdf:resource="&owl;DataRange"/>
                                        <owl11:onDataRange rdf:resource="&xsd;integer"/>
                                        <owl11:minInclusive rdf:datatype="&xsd;int">21</owl11:minInclusive>
                                    </rdf:Description>
                                </owl:someValuesFrom>
                            </owl:Restriction>
                        </owl:complementOf>
                    </owl:Class>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#CivilMarriage" />
    
    <owl:Class rdf:about="#Man">
        <rdfs:subClassOf rdf:resource="#Parent"/>         
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:hasValue rdf:resource="#male"/>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#Marriage">
        <owl:equivalentClass>
            <owl:Class>
                <owl:unionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#CivilMarriage"/>
                    <rdf:Description rdf:about="#ReligiousMarriage"/>
                </owl:unionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#Narcissist">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description>
                        <rdf:type rdf:resource="&owl11;SelfRestriction"/>
                        <owl:onProperty rdf:resource="#loves"/>
                    </rdf:Description>
                    <rdf:Description rdf:about="#Person"/>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#Parent">
        <rdfs:subClassOf rdf:resource="#Parent"/>         
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasChild"/>
                        <owl11:onClass rdf:resource="#Person"/>
                        <owl:minCardinalityQ rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinalityQ>
                    </owl:Restriction>
                    <rdf:Description rdf:about="#Person"/>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#Person">
        <rdfs:subClassOf>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:allValuesFrom>
                            <owl:Class>
                                <owl:oneOf rdf:parseType="Collection">
                                    <rdf:Description rdf:about="#female"/>
                                    <rdf:Description rdf:about="#male"/>
                                </owl:oneOf>
                            </owl:Class>
                        </owl:allValuesFrom>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
                    </owl:Restriction>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasAge"/>
                        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </rdfs:subClassOf>
    </owl:Class>
    
    <owl:Class rdf:about="#ReligiousMarriage">
        <owl:disjointWith rdf:resource="#CivilMarriage"/>
    </owl:Class>
    
    <owl:Class rdf:about="#Teenager">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasAge"/>
                        <owl:someValuesFrom>
                            <rdf:Description>
                                <rdf:type rdf:resource="&owl;DataRange"/>
                                <owl11:minInclusive rdf:datatype="&xsd;int">13</owl11:minInclusive>
                                <owl11:maxExclusive rdf:datatype="&xsd;int">20</owl11:maxExclusive>
                                <owl11:onDataRange rdf:resource="&xsd;integer"/>
                            </rdf:Description>
                        </owl:someValuesFrom>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#Woman">
        <rdfs:subClassOf rdf:resource="#Parent"/>         
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Restriction>
                        <owl:onProperty rdf:resource="#hasGender"/>
                        <owl:hasValue rdf:resource="#female"/>
                    </owl:Restriction>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    <owl:Class rdf:about="#YoungChild">
        <owl:equivalentClass>
            <owl:Class>
                <owl:intersectionOf rdf:parseType="Collection">
                    <rdf:Description rdf:about="#Person"/>
                    <owl:Class>
                        <owl:complementOf>
                            <owl:Class>
                                <owl:unionOf rdf:parseType="Collection">
                                    <rdf:Description rdf:about="#Adult"/>
                                    <rdf:Description rdf:about="#Teenager"/>
                                </owl:unionOf>
                            </owl:Class>
                        </owl:complementOf>
                    </owl:Class>
                </owl:intersectionOf>
            </owl:Class>
        </owl:equivalentClass>
    </owl:Class>
    
    
    <rdf:Description rdf:about="#Bill">
        <rdf:type>
            <owl:Class>
                <owl:complementOf rdf:resource="#Narcissist"/>
            </owl:Class>
        </rdf:type>
        <hasAge rdf:datatype="&xsd;integer">13</hasAge>
        <hasGender rdf:resource="#male"/>
    </rdf:Description>
    
    <rdf:Description rdf:about="#Ellen">
        <rdf:type>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#hasAge"/>
                <owl:someValuesFrom>
                    <rdf:Description>
                        <rdf:type rdf:resource="&owl;DataRange"/>
                        <owl11:minInclusive rdf:datatype="&xsd;int">15</owl11:minInclusive>
                        <owl11:onDataRange rdf:resource="&xsd;integer"/>
                        <owl11:maxInclusive rdf:datatype="&xsd;int">21</owl11:maxInclusive>
                    </rdf:Description>
                </owl:someValuesFrom>
            </owl:Restriction>
        </rdf:type>
    </rdf:Description>
    
    <rdf:Description rdf:about="#Emily">
        <rdf:type>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#hasAge"/>
                <owl:someValuesFrom>
                    <rdf:Description>
                        <rdf:type rdf:resource="&owl;DataRange"/>
                        <owl:oneOf>
                            <rdf:Description>
                                <rdf:type rdf:resource="&rdf;List"/>
                                <rdf:first rdf:datatype="&xsd;integer">39</rdf:first>
                                <rdf:rest>
                                    <rdf:Description>
                                        <rdf:type rdf:resource="&rdf;List"/>
                                        <rdf:rest rdf:resource="&rdf;nil"/>
                                        <rdf:first rdf:datatype="&xsd;integer">49</rdf:first>
                                    </rdf:Description>
                                </rdf:rest>
                            </rdf:Description>
                        </owl:oneOf>
                    </rdf:Description>
                </owl:someValuesFrom>
            </owl:Restriction>
        </rdf:type>
    </rdf:Description>
    
    <owl11:NegativeDataPropertyAssertion>
        <rdf:subject rdf:resource="#Jack"/>
        <rdf:predicate rdf:resource="#hasAge"/>
        <rdf:object rdf:datatype="&xsd;integer">53</rdf:object>
    </owl11:NegativeDataPropertyAssertion>
    
    <rdf:Description rdf:about="#Jeff">
        <rdf:type>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#hasChild"/>
                <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:cardinality>
            </owl:Restriction>
        </rdf:type>
        <hasAge rdf:datatype="&xsd;integer">77</hasAge>
        <hasChild rdf:resource="#Ellen"/>
        <hasWife rdf:resource="#Emily"/>
        <loves rdf:resource="#Jeff"/>
        <hasChild rdf:resource="#Jack"/>
    </rdf:Description>
    
    <Person rdf:about="#John">
        <hasDaughter rdf:resource="#Susan"/>
        <hasGender rdf:resource="#male"/>
        <hasWife rdf:resource="#Mary"/>
        <hasSon rdf:resource="#Bill"/>
        <hasAge rdf:datatype="&xsd;integer">33</hasAge>
        <owl:sameAs rdf:resource="#Jack"/>
    </Person>
    
    <rdf:Description rdf:about="#Mary">
        <hasAge rdf:datatype="&xsd;integer">31</hasAge>
        <hasGender rdf:resource="#female"/>
        <hasSon rdf:resource="#Bill"/>
        <hasDaughter rdf:resource="#Susan"/>
    </rdf:Description>
    
    <rdf:Description rdf:about="#Susan">
        <hasAge rdf:datatype="&xsd;integer">8</hasAge>
        <hasGender rdf:resource="#female"/>
    </rdf:Description>
    
    <rdf:Description rdf:about="#female">
        <owl:sameAs rdf:resource="&g;feminine"/>
    </rdf:Description>
    
    <rdf:Description rdf:about="#male">
        <owl:sameAs rdf:resource="&g;masculine"/>
    </rdf:Description>
    
    <rdf:Description>
        <rdf:type rdf:resource="&owl;AllDifferent"/>
        <owl:distinctMembers rdf:parseType="Collection">
            <rdf:Description rdf:about="#John"/>
            <rdf:Description rdf:about="#Mary"/>
            <rdf:Description rdf:about="#Bill"/>
            <rdf:Description rdf:about="#Susan"/>
        </owl:distinctMembers>
    </rdf:Description>
 
    <rdf:Description>
        <rdf:type rdf:resource="&owl;AllDifferent"/>
        <owl:distinctMembers rdf:parseType="Collection">
            <rdf:Description rdf:about="#Jeff"/>
            <rdf:Description rdf:about="#Emily"/>
            <rdf:Description rdf:about="#Jack"/>
            <rdf:Description rdf:about="#Ellen"/>
            <rdf:Description rdf:about="#Susan"/>
        </owl:distinctMembers>
    </rdf:Description>

    <rdf:Description>
        <rdf:type rdf:resource="&owl;AllDifferent"/>
        <owl:distinctMembers rdf:parseType="Collection">
            <rdf:Description rdf:about="#male"/>
            <rdf:Description rdf:about="#female"/>
        </owl:distinctMembers>
    </rdf:Description>

    <rdf:Description>
        <owl:propertyChain rdf:parseType="Collection">
      	     <rdf:Description rdf:about="#hasSpouse"/>
	     <rdf:Description rdf:about="#hasSon"/>
        </owl:propertyChain>
        <rdfs:subPropertyOf rdf:resource="#hasSon"/>
    </rdf:Description>

    <rdf:Description>
        <owl:propertyChain rdf:parseType="Collection">
      	     <rdf:Description rdf:about="#hasSpouse"/>
	     <rdf:Description rdf:about="#hasDaughter"/>
        </owl:propertyChain>
        <rdfs:subPropertyOf rdf:resource="#hasDaughter"/>
    </rdf:Description>
</rdf:RDF>