<?xml version="1.0"?>

<!-- Vocabulary in the EPAL language modelling Privacy Systems.-->

<!--Vocabulary for Location Based Services - Edited 10 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 epal.xsd
 http://www.w3.org/2001/XMLSchema xs-dummy.xsd ">

  <vocabulary-information id="PrivSys">
    <short-description language="en">Privacy System Vocabulary</short-description>
    <long-description language="en">This is a vocabulary in EPAL that will be used for modelling the interactions in a Privacy System.</long-description>
    <issuer>
      <name>Penn Security Lab</name>
      <organization>University of Pennsylvania</organization>
      <e-mail>seclab@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-10T12:00:00"
      last-modified="2004-08-10T15:34:00" 
      revision-number="" start-date="2004-08-10T15:34:00" test="true"/>
  </vocabulary-information>

	<!--User categories as defined in the paper-->
	<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="AnyUser">
		<short-description language="en">Root category that includes all subcategories</short-description>
    </user-category>

	<!--Data categories don't matter in a Privacy System, so this is left generic-->
	<data-category id="AnyCategory">
		<short-description language="en">Root of all data types.</short-description>
	</data-category>

	<!--Purposes play an ambiguous role in Privacy Systems.  They are part of the Sigmas that make up permissions, but don't exist on their own.  Requests will certainly have to use purposes to describe what is going to be done, but it is hard to make a complete vocab for them a priori.-->
	<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 - These containers are used for describing the data for
  the four kinds of events - publish/subscribe, action, creation, set policy.  There
  also is a container describing a sigma permission object.  Publish/Subscribe and
  Set Policy require a special container with multiple sigmas inside because they all
  must be taken into consideration when decided whether to allow an action or not.-->
	
	<!--Container for information about the principal involved in the publishing event.  This
	Container has information about the Sigmas that belong to each principal.  dateTime
	values are included too to allow for checking expiration of principal permissions-->
	<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.
		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 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 publisher</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 subscriber</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 setter</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 recipient</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 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 be useful for transformations and the like-->
  <obligation id="ReduceAccuracy">
    <short-description language="en">Data must be reduced in accuracy before the action of this rule can be
    executed.</short-description>
  </obligation>

</epal-vocabulary>