@base <http://eulersharp.sourceforge.net/2003/03swap/agent> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dce: <http://purl.org/dc/elements/1.1/> .
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix doc: <document#> .
@prefix event: <event#> .
@prefix fos: <foster#> .
@prefix physical: <physicalResource#> .
@prefix agent: <#> .
@prefix human: <human#> .
@prefix organism: <organism#> .

<>
    dce:contributor "Marc Twagirumukiza, MD, PhD, Agfa Healthcare/Belgium; Until 2010: Pieterjan De Potter, Pedro Debevere, Ghent University - IBBT/ELIS - Multimedia Lab/Belgium"@en ;
    dce:creator "Hans Cools, MD, Agfa Healthcare/Belgium"@en ;
    dce:description "Formal general description of agents and the roles they can play."@en ;
    dce:format "OWL Full"@en ;
    dce:publisher "Agfa Healthcare/Belgium"@en ;
    dce:source "http://www.artint.info/html/ArtInt_34.html"@en ;
    dce:title "Agent"@en ;
    a owl:Ontology .

agent:Ability
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "ability"@en ;
    skos:definition "Being able to do something."@en .

agent:Ancestry
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "ancestry"@en ;
    rdfs:subClassOf agent:Group, [
        a owl:Restriction ;
        owl:onProperty foaf:member ;
        owl:someValuesFrom agent:Ascendant
    ] ;
    skos:definition "An ascendant group of any kind of something."@en .

agent:Ascendant
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "ascendant"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty agent:hasDescendant
    ] ;
    skos:definition "An earlier form in appearance, function, or general character of something."@en .

agent:Authenticator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "authenticator"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Authenticating
    ] ;
    skos:definition "Role of an agent authenticating something." .

agent:Child
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "child"@en ;
    rdfs:subClassOf agent:Descendant, [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty agent:hasParent
    ] ;
    skos:definition "A first grade descendant of something."@en .

agent:Community
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "community"@en ;
    rdfs:subClassOf agent:Group ;
    skos:definition "Group of agents of which the members have something in common."@en .

agent:Completor
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "completor"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Completing
    ] ;
    skos:definition "Role of an agent completing something." .

agent:Creator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "creator"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Creating
    ] ;
    skos:definition "Role of an agent creating something."@en .

agent:Deprecator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "deprecator"@en ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:allValuesFrom doc:Deprecating ;
        owl:onProperty agent:rolePlayedIn
    ] ;
    skos:definition "Role of agent marking a digital document as obsolete to warn against its use so that it may be phased out (www.thefreedictionary.com)."@en .

agent:Descendant
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "descendant"@en ;
    rdfs:subClassOf foaf:Agent, [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty agent:hasAscendant
    ] ;
    skos:definition "Something deriving in appearance, function, or general character from an earlier form."@en .

agent:Donor
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "donor"@en ;
    rdfs:subClassOf agent:Role ;
    skos:definition "Role of an agent giving something."@en .

agent:DrugSubstance
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "drug substance"@en ;
    rdfs:subClassOf physical:Resource, foaf:Agent ;
    skos:definition "Substance, when absorbed into an organism, alters its functioning."@en .

agent:Evaluator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "evaluator"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Evaluating
    ] ;
    skos:definition "Role of an agent evaluating something."@en .

agent:Examinator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "examinator"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedBy ;
        owl:someValuesFrom [
            a owl:Restriction ;
            owl:onProperty agent:actsIn ;
            owl:someValuesFrom event:Examining
        ]
    ] ;
    skos:definition "Role of an agent examining something."@en .

agent:Group
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "group of agents"@en ;
    rdfs:subClassOf fos:Group, foaf:Group ;
    skos:definition "Group of agents."@en .

agent:GroupRole
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "group role"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:allValuesFrom agent:Group ;
        owl:onProperty agent:rolePlayedBy
    ] ;
    skos:definition "Specific function of a group."@en .

agent:LegalAuthenticator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "legal authenticator"@en ;
    rdfs:subClassOf agent:Authenticator, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:LegalAuthenticating
    ] ;
    skos:definition "Role of an agent legally authenticating something." .

agent:Machine
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "machine"@en ;
    rdfs:subClassOf physical:Device, physical:Product, foaf:Agent ;
    skos:definition "A device using energy to perform an action."@en .

agent:MachineRole
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "machine role"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:allValuesFrom agent:Machine ;
        owl:onProperty agent:rolePlayedBy
    ] ;
    skos:definition "Specific function of a machine."@en .

agent:MaritalStatus
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "marital status"@en ;
    skos:definition "the social and/or juridical status of being married or unmarried. "@en .

agent:Messenger
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "messenger"@en ;
    rdfs:subClassOf agent:Sender ;
    skos:definition "Role of an agent sending a message."@en .

agent:Modifier
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "modifier"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Modifying
    ] ;
    skos:definition "Role of an agent changing something."@en .

agent:Monitor
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "monitor"@en ;
    rdfs:subClassOf agent:Role ;
    skos:definition "Role of an agent observing something to detect something."@en .

agent:Offspring
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "offspring"@en ;
    rdfs:subClassOf agent:Group, [
        a owl:Restriction ;
        owl:allValuesFrom agent:Descendant ;
        owl:onProperty foaf:member
    ] ;
    skos:definition "A descendant group of any kind of something."@en .

agent:OrganizationRole
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "organization role"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:allValuesFrom foaf:Organization ;
        owl:onProperty agent:rolePlayedBy
    ] ;
    skos:definition "Specific function of an organization."@en ;
    skos:note "An organization can be a legal person."@en .

agent:Parent
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "parent"@en ;
    rdfs:subClassOf agent:Ascendant, [
        a owl:Restriction ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onProperty agent:hasChild
    ] ;
    skos:definition "A first grade ascendant of something."@en .

agent:PurposiveAgent
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "purposive agent"@en ;
    rdfs:subClassOf foaf:Agent ;
    skos:definition "Agent having preference of some state of the environment and acting to try to achieve most preferred state."@en .

agent:Recipient
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "recipient"@en ;
    rdfs:subClassOf agent:Role ;
    skos:definition "Role of an agent receiving something."@en .

agent:Role
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "role"@en ;
    owl:disjointWith foaf:Agent ;
    skos:definition "Specific function of an agent."@en .

agent:Sender
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "sender"@en ;
    rdfs:subClassOf agent:Donor ;
    skos:definition "Role of agent sending something."@en .

agent:Sponsor
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "sponsor"@en ;
    rdfs:subClassOf agent:Role ;
    skos:definition "Role of an agent sponsoring something."@en .

agent:Submittor
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "submittor"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Submitting
    ] ;
    skos:definition "Role of an agent submitting something." .

agent:User
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "user"@en ;
    rdfs:subClassOf agent:Role ;
    skos:definition "Role of putting something into service or applying for a purpose."@en .

agent:UserCredential
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "user credential"@en ;
    rdfs:subClassOf event:Input ;
    skos:definition "Convincible information as input to get user access, e.g. to a digital multiuser computer system."@en .

agent:Validator
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "validator"@en ;
    rdfs:subClassOf agent:Role, [
        a owl:Restriction ;
        owl:onProperty agent:rolePlayedIn ;
        owl:someValuesFrom event:Validating
    ] ;
    skos:definition "Role of an agent validating something." .

agent:WeighingDevice
    a rdfs:Class ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "weighing device"@en ;
    rdfs:subClassOf physical:Device ;
    skos:definition "Device to measure the weight of a physical resource."@en .

agent:abilityOf
    a owl:ObjectProperty ;
    rdfs:domain agent:Ability ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    owl:inverseOf agent:hasAbility ;
    skos:definition "Specifying an agent having an ability."@en .

agent:actsAfter
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    owl:PropertyChainAxiom (agent:actsIn
        event:after
        agent:hasAgent
    ) ;
    skos:definition "Specifying an agent acting after another agent in a same action."@en .

agent:actsBefore
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    owl:PropertyChainAxiom (agent:actsIn
        event:before
        agent:hasAgent
    ) ;
    skos:definition "Specifying an agent acting before another agent in a same action."@en .

agent:actsIn
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range event:Action ;
    skos:definition "Specifying an action an agent is involved in."@en .

agent:authenticatesWith
    a owl:ObjectProperty ;
    rdfs:domain [
        a owl:Restriction ;
        owl:onProperty agent:playsRole ;
        owl:someValuesFrom agent:User
    ] ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:UserCredential ;
    skos:definition "Specifying credentials an agent uses to authenticate."@en .

agent:hasAbility
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Ability ;
    skos:definition "Specifying an ability of an agent."@en .

agent:hasAgent
    a owl:ObjectProperty ;
    rdfs:domain event:Action ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    owl:inverseOf agent:actsIn ;
    skos:definition "Specifying an agent involved in an action."@en .

agent:hasAncestry
    a owl:ObjectProperty ;
    rdfs:domain agent:Descendant ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Ancestry ;
    skos:definition "Specifying a ascendant group of a descendant."@en .

agent:hasAscendant
    a owl:ObjectProperty ;
    rdfs:domain agent:Descendant ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Ascendant ;
    skos:definition "Specifying any ascendant of a descendant."@en .

agent:hasChild
    a owl:ObjectProperty ;
    rdfs:domain agent:Parent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Child ;
    rdfs:subPropertyOf agent:hasDescendant ;
    skos:definition "Specifying a first grade descendant of something."@en .

agent:hasDescendant
    a owl:ObjectProperty ;
    rdfs:domain agent:Ascendant ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Descendant ;
    skos:definition "Specifying any descendant of an ascendant."@en .

agent:hasDonor
    a owl:ObjectProperty ;
    rdfs:domain event:Transferring ;
    rdfs:isDefinedBy <#> ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty agent:playsRole ;
        owl:someValuesFrom agent:Donor
    ] ;
    skos:definition "Specifying a donor in a transfer of something."@en .

agent:hasMaritalStatus
    a owl:ObjectProperty ;
    rdfs:domain foaf:Person ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "has marital status"@en ;
    rdfs:range agent:MaritalStatus ;
    skos:definition "Speciafying an agent having the social and/or juridical status of being married or unmarried. "@en .

agent:hasOffspring
    a owl:ObjectProperty ;
    rdfs:domain agent:Ascendant ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Offspring ;
    skos:definition "Specifying a descendant group of an ascendant."@en .

agent:hasParent
    a owl:ObjectProperty ;
    rdfs:domain agent:Child ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Parent ;
    rdfs:subPropertyOf agent:hasAscendant ;
    skos:definition "Specifying a first grade ascendant of something."@en .

agent:hasPassword
    a rdf:Property ;
    rdfs:domain agent:UserCredential ;
    rdfs:isDefinedBy <#> ;
    rdfs:range rdfs:Literal ;
    skos:definition "Specifying a password of a user to access e.g. a multiuser computer system."@en .

agent:hasPlayedRole
    a owl:ObjectProperty ;
    rdfs:domain event:Action ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Role ;
    owl:PropertyChainAxiom (agent:hasAgent
        agent:playsRole
    ) ;
    skos:definition "Specifying a role played in an action."@en .

agent:hasRecipient
    a owl:ObjectProperty ;
    rdfs:domain event:Transferring ;
    rdfs:isDefinedBy <#> ;
    rdfs:range [
        a owl:Restriction ;
        owl:onProperty agent:playsRole ;
        owl:someValuesFrom agent:Recipient
    ] ;
    skos:definition "Specifying a recipient in a transfer of something."@en .

agent:hasResidence
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range con:ContactLocation ;
    skos:definition "Specifying a place wherein an agent with a certain role resides and can be contacted."@en .

agent:hasSpouse
    a owl:ObjectProperty ;
    rdfs:domain foaf:Person ;
    rdfs:isDefinedBy <#> ;
    rdfs:label "has a spouse"@en ;
    rdfs:range foaf:Person ;
    skos:definition "Specifying an agent having a partner (gender neutral) in a marriage, civil union, domestic partnership or common-law marriage."@en .

agent:hasUserCredential
    a owl:ObjectProperty ;
    rdfs:domain [
        a owl:Restriction ;
        owl:onProperty agent:playsRole ;
        owl:someValuesFrom agent:User
    ] ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:UserCredential ;
    skos:definition "Specifying credentials of a user to access e.g. a multiuser computer system."@en .

agent:hasUsername
    a owl:InverseFunctionalProperty ;
    rdfs:domain agent:UserCredential ;
    rdfs:isDefinedBy <#> ;
    rdfs:range rdfs:Literal ;
    skos:definition "Specifying a name of a user to access e.g. a multiuser computer system."@en .

agent:interactsWith
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    skos:definition "Specifying an agent interacting with another agent in a sense that it changes the outcome of the action compared to one with the other agent alone."@en ;
    skos:note "Not limited to direct interaction between 2 agents."@en .

agent:isAuthenticationObjectFor
    a owl:ObjectProperty ;
    rdfs:domain agent:UserCredential ;
    rdfs:isDefinedBy <#> ;
    rdfs:range event:Action ;
    skos:definition "Specifying something for which user credentials are needed to authenticate."@en .

agent:memberOf
    a owl:ObjectProperty ;
    rdfs:isDefinedBy <#> ;
    rdfs:subPropertyOf fos:memberOf ;
    owl:inverseOf foaf:member ;
    skos:definition "Specifying a group an agent is a member of."@en .

agent:playsRole
    a owl:ObjectProperty ;
    rdfs:domain foaf:Agent ;
    rdfs:isDefinedBy <#> ;
    rdfs:range agent:Role ;
    skos:definition "Specifying a role an agent plays."@en .

agent:recipientIn
    a owl:ObjectProperty ;
    rdfs:domain [
        a owl:Restriction ;
        owl:onProperty agent:playsRole ;
        owl:someValuesFrom agent:Recipient
    ] ;
    rdfs:isDefinedBy <#> ;
    rdfs:range event:Transferring ;
    skos:definition "Specifying a transfer for a recipient of something."@en .

agent:rolePlayedBy
    a owl:ObjectProperty ;
    rdfs:domain agent:Role ;
    rdfs:isDefinedBy <#> ;
    rdfs:range foaf:Agent ;
    owl:inverseOf agent:playsRole ;
    skos:definition "Specifying an agent playing a role."@en .

agent:rolePlayedIn
    a owl:ObjectProperty ;
    rdfs:isDefinedBy <#> ;
    owl:PropertyChainAxiom (agent:rolePlayedBy
        agent:actsIn
    ) ;
    owl:inverseOf agent:hasPlayedRole ;
    skos:definition "Specifying an action a role is played in."@en .

agent:weighs
    a owl:ObjectProperty ;
    rdfs:domain agent:WeighingDevice ;
    rdfs:isDefinedBy <#> ;
    rdfs:range physical:Resource ;
    skos:definition "Specifying something weighed by a device."@en .

