<?xml version="1.0" ?>

<!-- Vocabulary in the EPAL language modeling Privacy Systems example
Sharing With Partners.-->

<!--Vocabulary for Sharing With Partners Permissions Example - Edited 16 Aug 2004-->
<epal-vocabulary version="1.2"
   xmlns="http://www.research.ibm.com/privacy/epal"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.research.ibm.com/privacy/epal.xsd">
   <vocabulary-information id="SWP-Vocab">
      <short-description language="en">Privacy System Sharing With
          Partners Permissions Vocabulary</short-description> 
      <long-description language="en">This is a vocabulary in EPAL
          that will be used for modeling the interactions in a Privacy
          System in the Sharing With Partners Permissions
          example.</long-description> 
      <issuer>
         <name>Penn Security Lab</name>
         <organization>University of Pennsylvania</organization>
         <e-mail>mjmay@seas.upenn.edu</e-mail>
         <address>200 South 33rd Street, Philadelphia, PA 19104</address>
         <country>USA</country>
      </issuer>
   
      <location>http://www.securitylab.cis.upenn.edu</location>
      <version-info end-date="2005-08-16T12:00:00"
                    last-modified="2004-08-16T11:34:00"
                    revision-number=""
                    start-date="2004-08-16T15:34:00"
                    test="true" />
   </vocabulary-information>

   <!--User categories as defined in the system.  Most important thing
       is that the Principals have permissions associated with them.--> 
   <user-category id="Subject" parent="AnyUser">
      <short-description language="en">Subject</short-description>
   </user-category>

   <user-category id="Subscriber" parent="AnyUser">
      <short-description language="en">Subscriber</short-description>
   </user-category>

   <user-category id="Holder" parent="AnyUser">
      <short-description language="en">Holder</short-description>
   </user-category>

   <user-category id="Partner" parent="AnyUser">
      <short-description language="en">Partner of a Subscriber</short-description>
   </user-category>

   <user-category id="AnyUser">
      <short-description language="en">Root category that includes all
         subcategories</short-description>
   </user-category>

   <!--Data categories don't matter in a SWP Permissions Privacy System, so this is left generic.
    All data types are rolled into this one-->
   <data-category id="AnyCategory">
      <short-description language="en">Root of all data types.</short-description>
   </data-category>

   <!--Purposes are important in the SWP Permissions example because we model members of the
     Action set as 3-tuples of (Actions, Purpose, Data Category).-->
   <purpose id="P1" parent="AnyPurpose">
      <short-description language="en">Purpose1</short-description>
   </purpose>

   <purpose id="P2" parent="AnyPurpose">
      <short-description language="en">Purpose2</short-description>
   </purpose>

   <purpose id="AnyPurpose">
      <short-description language="en">Root purpose that includes all others</short-description>
   </purpose>

   <!--Actions are part of the A set in Privacy Systems-->
   <action id="PublishSubscribe">
      <short-description language="en">Publish Subscribe event - T function</short-description>
   </action>

   <action id="Creation">
      <short-description language="en">Creation event - V relation</short-description>
   </action>

   <action id="SetPolicy">
      <short-description language="en">Set Policy event - W relation</short-description>
   </action>

   <action id="Action">
      <short-description language="en">Action event - U relation</short-description>
   </action>

   <!--Containers for data.-->

   <!--Container for information about the principal making the
       request.  This Container has information about the Sigmas that
       are allowed. Note that Sigma = { dir, bottom } so there are
       only two potential settings for the Sigma value--> 
   <container id="PrincipalPermissions">
      <short-description language="en">Container for information about the principal involved in the
		publishing event.  This Container has information about the Sigmas that belong to each principal.
		Note that Sigma = { dir, indir, bottom } so there are only three potential settings for the Sigma value.
		dateTime values are included to allow for checking expiration of principal permissions</short-description> 
      <attribute id="Owner" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
         <short-description language="en">Name of the principal that owns this permission</short-description>
      </attribute>

      <attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
         <short-description language="en">Name of the subject of the permission</short-description>
      </attribute>

      <attribute id="Sigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
         <short-description language="en">Value of the permission indicator (Can be {dir, bottom} only)</short-description>
      </attribute>

      <attribute id="Expiry" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#dateTime">
         <short-description language="en">Date and time when the permission expires</short-description>
      </attribute>
   </container>

   <!--Container that has all the partners of a particular principal-->
   <container id="Partners">
      <short-description language="en">Contains names of all the
          partners of a particular principal</short-description> 
      <attribute id="Name" maxOccurs="unbounded" minOccurs="0" simpleType="http://www.w3.org/2001/XMLSchema#string">
         <short-description language="en">Name of the partner</short-description>
      </attribute>
	</container>
	
	<!--Container that has all the actions that can be done with only indirect permission-->
	<container id="A_indir">
		<short-description language="en">Contains all the actions that are in the set A_indir</short-description>
		<attribute id="ActionID" maxOccurs="unbounded" minOccurs="0" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the action</short-description>
		</attribute>
	</container>
	
	<!--Container for a transfer request-->
	<container id="TransferPermissions">
		<short-description language="en">Container with the information needed to evaluate a transfer request.</short-description>
		<attribute id="PublisherSigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Value of the Sigma that the publisher has on the subject</short-description>
		</attribute>
		<attribute id="SubscriberSigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Value of the Sigma that the subscriber has on the subject</short-description>
		</attribute>
		<attribute id="Publisher" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the sender</short-description>
		</attribute>
		<attribute id="Subscriber" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the receiver</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the subject of the data</short-description>
		</attribute>
	</container>
	
	<!--Container for a set policy request-->
	<container id="SetPolicyPermissions">
		<short-description language="en">Container with the information needed to evaluate a set policy request.</short-description>
		<attribute id="SetterSigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Value of the Sigma that the setter has on the subject</short-description>
		</attribute>
		<attribute id="RecipientSigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Value of the Sigma that the recipient has on the subject</short-description>
		</attribute>
		<attribute id="Setter" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is doing the setting of the permissions</short-description>
		</attribute>
		<attribute id="Recipient" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is receiving the permission on the subject</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that the permission is being set about</short-description>
		</attribute>
	</container>
	
	<!--Container for Set Policy Event-->
	<container id="SetPolicyEvent">
		<short-description language="en">All the data necessary for the evaluation of a set policy event -
		   p sets sigma on q for r at t</short-description>
		<attribute id="Setter" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is doing the setting of the permissions</short-description>
		</attribute>
		<attribute id="Sigma" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Value of the permission that the setter is setting</short-description>
		</attribute>
		<attribute id="Recipient" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is receiving the permission on the subject</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that the permission is being set about</short-description>
		</attribute>
		<attribute id="Time" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#dateTime">
			<short-description language="en">Time and date when the set policy event is taking place</short-description>
		</attribute>
	</container>
	
	<!--Container for Creation Event-->
	<container id="CreationEvent">
		<short-description language="en">All the data necessary for the evaluation of a creation event -
		   p creates x at t</short-description>
		<attribute id="Creator" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is doing the object creation</short-description>
		</attribute>
		<attribute id="Object" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Object being created</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that the object created is about</short-description>
		</attribute>
		<attribute id="Time" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#dateTime">
			<short-description language="en">Time and date when the creation is taking place</short-description>
		</attribute>
	</container>
	
	<!--Container for Publish/Subscribe Event-->
	<container id="PublishSubscribeEvent">
		<short-description language="en">All the data necessary for the evaluation of a set publish/subscribe event -
		   p gets x from q at t</short-description>
		<attribute id="Publisher" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is doing the publishing</short-description>
		</attribute>
		<attribute id="Object" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Object that is being published</short-description>
		</attribute>
		<attribute id="Subscriber" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is receiving the object</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that the object is about</short-description>
		</attribute>
		<attribute id="Time" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#dateTime">
			<short-description language="en">Time and date when the publishing/subscribing is taking place</short-description>
		</attribute>
	</container>
	
	<!--Container for Action Event-->
	<container id="ActionEvent">
		<short-description language="en">All the data necessary for the evaluation of an action event -
		   p does a on q at t</short-description>
		<attribute id="Actor" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is doing the action</short-description>
		</attribute>
		<attribute id="Action" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Action being done</short-description>
		</attribute>
		<attribute id="Subject" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#string">
			<short-description language="en">Name of the principal that is being acted on</short-description>
		</attribute>
		<attribute id="Time" maxOccurs="1" minOccurs="1" simpleType="http://www.w3.org/2001/XMLSchema#dateTime">
			<short-description language="en">Time and date when the action is taking place</short-description>
		</attribute>
	</container>
	
	<!--Obligations will not be needed for the Direct Time Limited Permission Example-->
	
</epal-vocabulary>