<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
	 <!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 policy 'http://www.cs.umbc.edu/~lkagal1/rei/ontologies/ReiPolicy.owl#'>
	 <!ENTITY action 'http://www.cs.umbc.edu/~lkagal1/rei/ontologies/ReiAction.owl#'>
	 <!ENTITY constraint 'http://www.cs.umbc.edu/~lkagal1/rei/ontologies/ReiConstraint.owl#'>
	 <!ENTITY deontic 'http://www.cs.umbc.edu/~lkagal1/rei/ontologies/ReiDeontic.owl#'>
	 <!ENTITY entity 'http://www.cs.umbc.edu/~lkagal1/rei/ontologies/ReiEntity.owl#'>
	 <!ENTITY dso 'http://www.dspace.org/objectModel#'>
	 <!ENTITY dsr 'http://www.dspace.org/rules.rdfs#'>
	 <!ENTITY inst 'http://www.dspace.org/instances.rdf#'>
	 <!ENTITY history 'http://www.dspace.org/history#'>
	 <!ENTITY dc 'http://purl.org/dc/elements/1.1/'>
	 ]>
	 
<rdf:RDF xmlns:rdf="&rdf;"
	     xmlns:rdfs="&rdfs;"
	     xmlns:owl="&owl;"
	     xmlns:policy="&policy;"
	     xmlns:action="&action;"
	     xmlns:constraint="&constraint;"
	     xmlns:deontic="&deontic;"
	     xmlns:entity="&entity;"
	     xmlns:dso="&dso;"
	     xmlns:dsr="&dsr;"
	     xmlns:inst="&inst;"
	     xmlns:history="&history;"
         xmlns:dc="&dc;">
	     
	     
    <!-- TI-0011 Replication
    
         Actual DSpace Policy Examples
    
        1. Each DSpace Item must be replicated 3 times.
        2. Upon deposit, DSpace will create 3 copies of each Item, one of these copies must be stored locally and 2 remote.
    -->
    
    <entity:Variable rdf:ID="var1" policy:desc="An authorized DSpace User" />
    
    <entity:Variable rdf:ID="var2" policy:desc="A DSpace Item"/>
    
    <!-- Each DSpace Item -->
    <constraint:SimpleConstraint rdf:ID="IsDSpaceItem">
        <constraint:subject rdf:resource="#var2"/>
        <constraint:predicate rdf:resource="&rdf;type"/>
        <constraint:object rdf:resource="&dso;Item"/>
        <policy:desc>All DSpace Items</policy:desc>
    </constraint:SimpleConstraint>
    
    <!-- [Upon Deposit] -->
    <constraint:SimpleConstraint rdf:ID="CreatesItem">
        <constraint:subject rdf:resource="#var1"/>
        <constraint:predicate rdf:resource="&history;Create"/>
        <constraint:object rdf:resource="#var2"/>
    </constraint:SimpleConstraint>
    
    <constraint:SimpleConstraint rdf:ID="RequiresReplication">
        <constraint:subject rdf:resource="&dso;Item"/>
        <constraint:predicate rdf:resource="&dsr;Requires"/>
        <constraint:object rdf:resource="&dsr;Replication"/>
    </constraint:SimpleConstraint>
        
    <dsr:MakingRemoteCopy rdf:ID="MakesRemoteCopy1">
        <action:actor rdf:resource="dso:Site"/>
        <action:target rdf:resource="#var2"/>
        <action:location rdf:resource="http://irods.sdsc.edu/index.php/Main_Page"/>
    </dsr:MakingRemoteCopy>
        
    <dsr:MakingRemoteCopy rdf:ID="MakesRemoteCopy2">
        <action:actor rdf:resource="&dso;Site"/>
        <action:target rdf:resource="#var2"/>
        <action:location rdf:resource="http://www.dspace.cam.ac.uk/"/>
    </dsr:MakingRemoteCopy>
               
    <deontic:Obligation rdf:ID="MakeRemoteCopy1">
        <deontic:actor rdf:resource="&dso;Site"/>
        <deontic:action rdf:resource="#MakesRemoteCopy1"/>
        <deontic:constraint rdf:resource="#CreatesItem"/>
    </deontic:Obligation>
        
    <deontic:Obligation rdf:ID="MakeRemoteCopy2">
        <deontic:actor rdf:resource="&dso;Site"/>
        <deontic:action rdf:resource="#MakesRemoteCopy2"/>
        <deontic:constraint rdf:resource="#CreatesItem"/>
    </deontic:Obligation>
        
    <policy:Policy rdf:ID="TI0001Replication">
        <policy:actor rdf:resource="&dso;Site"/>
        <policy:context rdf:resource="#RequiresReplication"/>
        <policy:grants rdf:resource="#MakeRemoteCopy1"/>
        <policy:grants rdf:resource="#MakeRemoteCopy2"/>
    </policy:Policy>
    
</rdf:RDF>