<?xml version="1.0"?>

<!--
  An RDF Schema for P3P

  $Id: p3p-rdf-schema.xml,v 1.6 2001/11/26 18:57:40 bwm Exp $

This version is based on the P3P 1.0 Working Draft dated
28 September 2001:

  http://www.w3.org/TR/2001/WD-P3P-20010928

and on the RDF Model and Syntax Specification

  http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/

and RDF Schema Candidate Recommendation dated 27th March 2000

  http://www.w3.org/TR/2000/CR-rdf-schema-20000327

  Issues
  ======

  8) I&quot;m uncertain about the range of the entity property.

     That is because there is a modelling error implicit in the P3P
     WD.  The ENTITY element takes a business data set to represent
     legal entity responsible for the policy.  However, the legal
     entity might not be a business, it might be an individual.
     Should be define a LegalEntity class which is a superclass
     of business and person and use that at the range?

 17) How do we handle extensions?

 20) Consistency in the use of containers to collect properties

 22) Can we share values of purpose and recipient required?

 23) Is there a type hierarchy in Retention?

 24) Enumerated types: use literal values or defined resource classes?

 25) Should data-element have a range?

 26) Does P3P namespace end in a '#'

 27) Are the leaf nodes of a data structure data elements, i.e. can
     they be referenced directly from a statements datagroup element?

 28) How many middle names can someone have.  If >1 then order
     order is a problem.

 29) Use subClassOf or type to indicate variable category?

 30) dscCategory: replace with subClassOf?

 31) Inconsistent use of collections and repeated properties.

 32) Check out InfoType hierarchy

 33) Should access be a subProperty of rdf:type?

 34) Review use of Class hierarchy for purpose.

 35) Check subClass relationships on InfoType and Purpose

 36) Relative class definitions :(

 37) Check RecipientClass (and other) modifiers.

 Decisions
 =========

 1)  Decided to remove the language selector mechanism and stick with
     the way things are done in the P3P spec. 

  5) Sometimes privacy policies are about services, sometime about
     web sites.  Is there a difference?

     Not as far as this is concerned.

  6) Whats the difference between Court and Applicable law in the
     Dispute element?

     Don&apos;t know, but it does not seem to effect this schema.

  7) 5.3.5.3 describes Online as a structure with contact information
     about a *person*.  Online may be used for organisations.

     Reported as editorial error.  Does not affect this schema.

  9) I&quot;ve modelled InfoTypes as a class hierarchy which is not
     really what is implied by the P3P document.  Is this reasonable?
     Similarly with the dispute resolution types.

     The ACCESS property takes a Class as its value, not an instance
     of that class.  Decided to model InfoTypes as a class hierarchy;
     this allows to use RDF Schema and DAML processors and enables
     extensibility.  InfoType is a subclass of class.

     A member of a collection of disputes is an instance of type
     ResolutionProcedure.  This is therefore more conventional.
     ResolutionProcedure is a subclass of Resource.

 10) Use a bag to collect remedies

     No.  Remedies are currently very simple, but they could be extened
     in future into a richer type hierarchy in which cases the remedy
     property can become a subProperty of rdf:type and Remedy a subClass
     of Class.

 11) A policy has a name property.  An organization has a name property.
     Are these the same property?

     No.  A policy name property has uniqueness properties that don&apos;
     apply to organizational name properties.  They are different things.?

 12) Will create classes for referenced resources e.g. policy statements.
     Could have just left these as resources, but this way there is more
     structure.

 13) How well does this model align with just running P3P through an
     RDF parser without transformation?

     It doesn&apos;t  Too bad - this is the intended model.

 14) Use a bag collect disputes?

 15) Whilst P3P uses a disputes element, the RDF model uses the term
     DisputesResolutionProcedure as that is more accurate

 16) Oops - there is no such thing rdfs:description.

     changed to rdfs:comment.

 18) Should the access values be represented by types?

     See 9 above.

 19) Should we collect purposes into a container?

     No, because then we can&apos;t use the class trick

 21) Does recipient-description need to be a separate property?

     Maybe not, but its consistent with the original p3p.  Keep.

-->

<!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 p3p     "http://www.w3.org/2001/09/P3Pv1#">
]>
<rdf:RDF xmlns:rdf="&rdf;"
         xmlns:rdfs="&rdfs;"
         xmlns:p3p="&p3p;">

<!-- A Policy and it Properties-->

<rdfs:Class rdf:about="&p3p;Policy">
  <rdfs:label xml:lang="en">policy</rdfs:label>
  <rdfs:comment xml:lang="en">A P3P Policy</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;policyName">
  <rdfs:label xml:lang="en">name</rdfs:label>
  <rdfs:comment xml:lang="en">The name of the policy</rdfs:comment>
</rdf:Property>

<!-- The human readable privacy statement for a policy 
     The value of this property is a language selector (see below) -->

<rdf:Property rdf:about="&p3p;discuri">
  <rdfs:label xml:lang="en">Disclosure</rdfs:label>
  <rdfs:comment xml:lang="en">A natural language privacy statement</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
  <rdfs:range  rdf:resource="&p3p;NaturalLanguagePrivacyStatement"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;NaturalLanguagePrivacyStatement">
  <rdfs:label xml:lang="en">privacy statement</rdfs:label>
  <rdfs:comment xml:lang="en">A natural language privacy statement</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;opturi">
  <rdfs:label xml:lang="en">Opt Instructions</rdfs:label>
  <rdfs:comment xml:lang="en">
    A link to instructions that users can follow to request or decline
    to have their data used for a particular purpose.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
  <rdfs:range  rdf:resource="&p3p;OptInstructions"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;OptInstructions">
  <rdfs:label xml:lang="en">Opt Instructions</rdfs:label>
  <rdfs:comment xml:lang="en">
    instructions that users can follow to request or decline
    to have their data used for a particular purpose.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<!-- A test policy is represented by defining it to be of
     rdf:type p3p:test -->

<rdfs:Class rdf:about="&p3p;Test">
  <rdfs:label xml:lang="en">test</rdfs:label>
  <rdfs:comment xml:lang="en">
    Used for testing purposes.  If a policy is of type p3p:Test
    then the policy is just an  example and as such it MUST be ignored.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;entity">
  <rdfs:label xml:lang="en">entity</rdfs:label>
  <rdfs:comment xml:lang="en">
    Identifies the legal entity making the representation of the privacy
    practices contained in the policy.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
  <rdfs:range  rdf:resource="&p3p;Business"/>
</rdf:Property>

<!-- The access property 

  The value of the access property is a resource which represents
  the class of information that the site will grant access to.

  The value of the property is an rdfs:Class.  That class must also be
  of type p3p:InfoType.

  Elsewhere in P3P, there are examples where the values of properties
  have modifiers.  It is desirable for future extensibility to allow
  for that sort of capability here in the future.  A simple access
  property has the form:

    [profile]-p3p:access->[p3p:InfoType]

  However, should it be necessary, a bNode can be used to allow
  modifiers to restrict the class, e.g.

   [profile]-p3p:access->[ ]
                          |
                          +-rdf:type->[p3p:InfoType]
                          |
                          +-rdfs:subClassOf->[p3p:InfoType-All]
                          |
                          +-rdfs:subClassOf->[eg:AnotherClass]

  Particular values of that information are represented by
  assigning a subType to that resource.
-->

<rdf:Property rdf:about="&p3p;access">
  <rdfs:label xml:lang="en">access</rdfs:label>
  <rdfs:comment>Indicates whether the site provides access various kinds of information.</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
  <rdfs:range  rdf:resource="&p3p;InfoType"/>
</rdf:Property>

<!-- Information types defined by P3P -->

<rdfs:Class rdf:about="&p3p;InfoType">
  <rdfs:label xml:lang="en">InfoType</rdfs:label>
  <rdfs:comment xml:lang="en">A class of information types defined by P3P.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Class"/>    <!-- **note**-->
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Info">
  <rdfs:label xml:lang="en">Info</rdfs:label>
  <rdfs:comment xml:lang="en">Information defined by P3P.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Class"/>    <!-- **note**-->
</rdfs:Class>

<p3p:InfoType rdf:about="&p3p;infoType-NonIdent">
  <rdfs:label xml:lang="en">NonIdent</rdfs:label>
  <rdfs:comment xml:lang="en">Identifiable data is not collected.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;infoType"/>
</p3p:InfoType>

<p3p:InfoType rdf:about="&p3p;infoType-All">
  <rdfs:label xml:lang="en">All</rdfs:label>
  <rdfs:comment xml:lang="en">Access is given to all identifiable information.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Info"/>
</p3p:InfoType>

<p3p:InfoType rdf:about="&p3p;infoType-ContactAndOther">
  <rdfs:label xml:lang="en">ContactAndOther</rdfs:label>
  <rdfs:comment xml:lang="en">Access is given to identified online and physical contact information as well as to certain other identified data.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;infoType-All"/>
</p3p:InfoType>

<p3p:InfoType rdf:about="&p3p;infoType-IdentContact">
  <rdfs:label xml:lang="en">IdentContact</rdfs:label>
  <rdfs:comment xml:lang="en">Access is given to identified online and physical contact information.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;InfoType-ContactAndOther"/>
</p3p:InfoType>

<p3p:InfoType rdf:about="&p3p;infoType-OtherIdent">
  <rdfs:label xml:lang="en">OtherIdent</rdfs:label>
  <rdfs:comment xml:lang="en">Access is given to certain other identified data.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;InfoType-ContactAndOther"/>
</p3p:InfoType>

<p3p:InfoType rdf:about="&p3p;infoType-None">
  <rdfs:label xml:lang="en">None</rdfs:label>
  <rdfs:comment xml:lang="en">
    No acces to identified data is given.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Info"/>
</p3p:InfoType>

<!-- the Disputes property and its value 

  The disputes property takes a value which a resource of type
  ResolutionProcedures which is in fact a subclass of Bag.
-->

<rdf:Property rdf:about="&p3p;resolutionProcedures">
  <rdfs:label xml:lang="en">resolutionProcedures</rdfs:label>
  <rdfs:comment xml:lang="en">
    A collection of dispute resolution procedures that may be
    followed for disputes about a service&apos;s privacy practices.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
  <rdfs:range  rdf:resource="&p3p;ResolutionProcedure"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;ResolutionProcedures">
  <rdfs:label xml:lang="en">ResolutionProcedures</rdfs:label>
  <rdfs:comment xml:lang="en">
    A collection of dispute resolution procedures.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdf;Bag"/>
</rdfs:Class>

<!-- The Dispute Element

  Disputes elements really represent dispute resolution procedures.
  A generic class ResolutionProcedure is defined and there
  are subclasses of that to represent different such procedures.
-->

<rdfs:Class rdf:about="&p3p;ResolutionProcedure">
  <rdfs:label xml:lang="en">Resolution Procedure</rdfs:label>
  <rdfs:comment xml:lang="en">
    A dispute resolution procedure.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;ResolutionProcedure-CustomerService">
  <rdfs:label xml:lang="en">Customer Service</rdfs:label>
  <rdfs:comment xml:lang="en">
    Individual may complain to the Web site&apos;s customer service
    respresentative for resolution of disputes regarding the use
    of collected data.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;ResolutionProcedure"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;ResolutionProcedure-IndependentOrganization">
  <rdfs:label xml:lang="en">Independent Organization</rdfs:label>
  <rdfs:comment xml:lang="en">
    Individual may complain to an independent organization
    for resolution of disputes regarding the use
    of collected data.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;ResolutionProcedure"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;ResolutionProcedure-Court">
  <rdfs:label xml:lang="en">Court</rdfs:label>
  <rdfs:comment xml:lang="en">
    Individual may file a legal complaint against the web site.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;ResolutionProcedure"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;ResolutionProcedure-ApplicableLaw">
  <rdfs:label xml:lang="en">Applicable Law</rdfs:label>
  <rdfs:comment xml:lang="en">
    Disputes arising in connection with the privacy statement will
    be resolved in accordance with the referenced law.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;ResolutionProcedure"/>
</rdfs:Class>

<!-- Resolution Procedure Properties -->

<rdf:Property rdf:about="&p3p;service">
  <rdfs:label xml:lang="en">Service</rdfs:label>
  <rdfs:comment>The resolution services</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;ResolutionProcedure"/>
  <rdfs:range  rdf:resource="&rdfs;Resource"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;verification">
  <rdfs:label xml:lang="en">Verification</rdfs:label>
  <rdfs:comment xml:lang="en">
    A resource which can be used for verification purposes.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;ResolutionProcedure"/>
  <rdfs:range  rdf:resource="&rdfs;Resource"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;remedy">
  <rdfs:label xml:lang="en">Remedy</rdfs:label>
  <rdfs:comment>The possible remedies in case a policy breach occurs.</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;ResolutionProcedure"/>
   <rdfs:range  rdf:resource="&p3p;Remedy"/>
</rdf:Property>

<!-- Remedy is a class of remedies. The rememdy property takes
     as value an instance of Remedy. -->

<rdfs:Class rdf:about="&p3p;Remedy">
  <rdfs:label xml:lang="en">Remedy</rdfs:label>
  <rdfs:comment>
    A remedy in case a policy breach occurs.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<p3p:Remedy rdf:about="&p3p;Remedy-Correct">
  <rdfs:label xml:lang="en">Correct</rdfs:label>
  <rdfs:comment>
    Errors or wrongful actions arising in connection with the privacy
    policy will be remedied by the service.
  </rdfs:comment>
</p3p:Remedy>

<p3p:Remedy rdf:about="&p3p;Remedy-Money">
  <rdfs:label xml:lang="en">Money</rdfs:label>
  <rdfs:comment>
    If the service provider violates its privacy policy it wil pay
    the individual an amount specified in the human readable privacy
    policy or the amount of damages.
  </rdfs:comment>
</p3p:Remedy>

<p3p:Remedy rdf:about="&p3p;Remedy-Law">
  <rdfs:label xml:lang="en">Law</rdfs:label>
  <rdfs:comment>
    Remedies for breaches of the policy statement will be determined
    based on the law referenced in the human readable description.
  </rdfs:comment>
</p3p:Remedy>

<!-- The statement Property and its value

  The statement property takes a value which is a collection of statements -->

<rdf:Property rdf:about="&p3p;statements">
  <rdfs:label xml:lang="en">statements</rdfs:label>
  <rdfs:comment>Data practices that are applied to particular types of data</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Policy"/>
   <rdfs:range  rdf:resource="&p3p;Statements"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;Statements">
  <rdfs:label xml:lang="en">Statements</rdfs:label>
  <rdfs:comment xml:lang="en">A collection of data practices that are applied to particular types of data</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdf;Bag"/>
</rdfs:Class>

<!-- The Statement class and its properties -->

<rdfs:Class rdf:about="&p3p;Statement">
  <rdfs:label xml:lang="en">Statement</rdfs:label>
  <rdfs:comment xml:lang="en">A data practice applied to particular types of data</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<!-- The NONIDENTIFIABLE element is represented by defining a type which
     represents Statements which assert that no data, or no identifiable
     data is collected. -->

<rdfs:Class rdf:about="&p3p;NonIdentifiable">
  <rdfs:label xml:lang="en">Non Identifiable</rdfs:label>
  <rdfs:comment>There is no data or no identifiable data collected.</rdfs:comment>
   <rdfs:subClassOf rdf:resource="&p3p;Statement"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;consequence">
  <rdfs:label xml:lang="en">Consequence</rdfs:label>
  <rdfs:comment>Consequences that can be shown to a human user to explain why the suggested practice may be valuable in a particular instance even if the user would not normally allow the practice.</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
   <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!--
    The purpose property and its values.  This property takes a type as a
    value.  Typical usage might be:

    [ ]-p3p:purpose->[ ]-rdfs:subClassOf->[p3p:Purpose-current]
                      |
                      +-rdfs:subClassOf->[p3p;Purpose-required]
-->

<rdf:Property rdf:about="&p3p;purpose">
  <rdfs:label xml:lang="en">Purpose</rdfs:label>
  <rdfs:comment>Defines the purpose for which the data practise is employed</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
   <rdfs:range  rdf:resource="&p3p;PurposeClass"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;Purpose">
  <rdfs:label xml:lang="en">Purpose</rdfs:label>
  <rdfs:comment xml:lang="en">The purpose for which the data practise is employed</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Class"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;PurposeClass">
  <rdfs:label xml:lang="en">Purpose</rdfs:label>
  <rdfs:comment xml:lang="en">The purpose for which the data practise is employed</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Class"/>
</rdfs:Class>

<p3p:PurposeClass rdf:about="&p3p;Purpose-current">
  <rdfs:label xml:lang="en">Completion and Support of Activity For Which Data Was Provided</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used by the service provider to complete the activity for which it was provided, whether a one-time activity such as returning the results from a Web search, forwarding an email message, or placing an order; or a recurring activity such as providing a subscription service, or allowing access to an online address book or electronic wallet.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-admin">
  <rdfs:label xml:lang="en">Web Site and System Administration</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used for the technical support of the Web site and its computer system. This would include processing computer account information, information used in the course of securing and maintaining the site, and verification of Web site activity by the site or its agents.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-develop">
  <rdfs:label xml:lang="en">Research and Development</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used to enhance, evaluate, or otherwise review the site, service, product, or market. This does not include personal information used to tailor or modify the content to the specific individual nor information used to evaluate, target, profile or contact the individual.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-tailoring">
  <rdfs:label xml:lang="en">tailoring</rdfs:label>
  <rdfs:comment xml:lang="en"> Information may be used to tailor or modify content or design of the site where the information is used only for a single visit to the site and not used for any kind of future customization.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-pseudo-analysis">
  <rdfs:label xml:lang="en">psuedo analysis</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used to create or build a record of a particular individual or computer that is tied to a pseudonymous identifier, without tying identified data (such as name, address, phone number, or email address) to the record. This profile will be used to determine the habits, interests, or other characteristics of individuals for purpose of research, analysis and reporting, but it will not be used to attempt to identify specific individuals. </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-pseudo-decision">
  <rdfs:label xml:lang="en">psuedo decision</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used to create or build a record of a particular individual or computer that is tied to a pseudonymous identifier, without tying identified data (such as name, address, phone number, or email address) to the record. This profile will be used to determine the habits, interests, or other characteristics of individuals to make a decision that directly affects that individual, but it will not be used to attempt to identify specific individuals.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-Individual Analysis">
  <rdfs:label xml:lang="en">individual analysis</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used to determine the habits, interests, or other characteristics of individuals and combine it with identified data for the purpose of research, analysis and reporting.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-contact">
  <rdfs:label xml:lang="en">individual analysis</rdfs:label>
  <rdfs:comment xml:lang="en"> Information may be used to contact the individual, through a communications channel other than voice telephone, for the promotion of a product or service. This includes notifying visitors about updates to the Web site.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-historical">
  <rdfs:label xml:lang="en">historical preservation</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be archived or stored for the purpose of preserving social history as governed by an existing law or policy.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<p3p:PurposeClass rdf:about="&p3p;Purpose-telemarketing">
  <rdfs:label xml:lang="en">telemarketing</rdfs:label>
  <rdfs:comment xml:lang="en">Information may be used to contact the individual via a voice telephone call for promotion of a product or service.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Purpose"/>
</p3p:PurposeClass>

<rdfs:Class rdf:about="&p3p;PurposeRequired">
  <rdfs:label xml:lang="en">Required</rdfs:label>
  <rdfs:comment xml:lang="en">Defines whether the purpose is a required practice for the site</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;PurposeRequiredClass">
  <rdfs:label xml:lang="en">Required</rdfs:label>
  <rdfs:comment xml:lang="en">Defines whether the purpose is a required practice for the site</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Class"/>
</rdfs:Class>

<p3p:PurposeRequiredClass rdf:about="&p3p;Purpose-always">
  <rdfs:label xml:lang="en">always</rdfs:label>
  <rdfs:comment xml:lang="en">The purpose is always required; users cannot opt-in or opt-out of this use of their data.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;PurposeRequired"/>
</p3p:PurposeRequiredClass>

<p3p:PurposeRequiredClass rdf:about="&p3p;Purpose-opt-in">
  <rdfs:label xml:lang="en">opt-in</rdfs:label>
  <rdfs:comment xml:lang="en">Data may be used for this purpose only when the user affirmatively requests this use</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;PurposeRequired"/>
</p3p:PurposeRequiredClass>

<p3p:PurposeRequiredClass rdf:about="&p3p;Purpose-opt-out">
  <rdfs:label xml:lang="en">opt-out</rdfs:label>
  <rdfs:comment xml:lang="en">Data may be used for this purpose unless the user requests that it not be used in this way</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;PurposeRequired"/>
</p3p:PurposeRequiredClass>

<!-- Recipients are handled by allowing multiple recipient properties
     of a Statement, each of which indicates a type of recipient. -->

<rdf:Property rdf:about="&p3p;recipient">
  <rdfs:label xml:lang="en">recipient</rdfs:label>
  <rdfs:comment>A legal entity, or domain, beyond the service provider and its agents where data may be distributed</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
   <rdfs:range  rdf:resource="&p3p;RecipientClass"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;Recipient">
  <rdfs:label xml:lang="en">Recipient</rdfs:label>
  <rdfs:comment xml:lang="en">A legal entity, or domain, beyond the service provider and its agents where data may be distributed</rdfs:comment>
  <rdfs:subClassOf rdf:resource="rdfs:Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;RecipientClass">
  <rdfs:label xml:lang="en">Recipient Class</rdfs:label>
  <rdfs:comment xml:lang="en">A class of legal entities, or domains, beyond the service provider and its agents where data may be distributed</rdfs:comment>
  <rdfs:subClassOf rdf:resource="rdfs:Class"/>
</rdfs:Class>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-ours">
  <rdfs:label xml:lang="en">ours</rdfs:label>
  <rdfs:comment xml:lang="en">Ourselves and/or our entities acting as our agents or entities for whom we are acting as an agent</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Recipient"/>
</rdfs:RecipientClass>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-delivery">
  <rdfs:label xml:lang="en">delivery</rdfs:label>
  <rdfs:comment xml:lang="en">Delivery services possibly following different practices</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Recipient"/>
</rdfs:RecipientClass>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-same">
  <rdfs:label xml:lang="en">same</rdfs:label>
  <rdfs:comment xml:lang="en">Legal entities following our practices</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Recipient"/>
</rdfs:RecipientClass>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-other">
  <rdfs:label xml:lang="en">other recipient</rdfs:label>
  <rdfs:comment xml:lang="en">Legal entities following different practices</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Recipient"/>
</rdfs:RecipientClass>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-unrelated">
  <rdfs:label xml:lang="en">unrelated</rdfs:label>
  <rdfs:comment xml:lang="en">Legal entities whose data usage practices are not known by the original service provider</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Recipient"/>
</rdfs:RecipientClass>

<rdfs:RecipientClass rdf:about="&p3p;Recipient-public">
  <rdfs:label xml:lang="en">public</rdfs:label>
  <rdfs:comment xml:lang="en">Public fora such as bulletin boards, public directories, or commercial CD-ROM directories</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;:Recipient"/>
</rdfs:RecipientClass>

<rdfs:Class rdf:about="&p3p;RecipientRequiredClass">
  <rdfs:label xml:lang="en">Recipient Required Class</rdfs:label>
  <rdfs:comment xml:lang="en">A Class of Recipient</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;:Recipient"/>
</rdfs:Class>

<rdfs:RecipientRequiredClass rdf:about="&p3p;recipient-always">
  <rdfs:label xml:lang="en">always</rdfs:label>
  <rdfs:comment xml:lang="en">The recipient always receives this data</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;:Recipient"/>
</rdfs:RecipientRequiredClass>

<rdfs:RecipientRequiredClass rdf:about="&p3p;recipient-opt-in">
  <rdfs:label xml:lang="en">opt-in</rdfs:label>
  <rdfs:comment xml:lang="en">The recipient may receive this data only when the user affirmatively requests it</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;:Recipient"/>
</rdfs:RecipientRequiredClass>

<rdfs:RecipientRequiredClass rdf:about="&p3p;recipient-opt-out">
  <rdfs:label xml:lang="en">opt-out</rdfs:label>
  <rdfs:comment xml:lang="en">The recipient will receive data unless the user requests that it not be used in this way</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;:Recipient"/>
</rdfs:RecipientRequiredClass>

<!-- 
     properties of RecipientClass 
-->

<rdf:Property rdf:about="&p3p;recipient-description">
  <rdfs:label xml:lang="en">recipient description</rdfs:label>
  <rdfs:comment>a description of the recipient</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;RecipientClass"/>
   <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>


<!-- 
     Each Statement has a retention property.  To enable a future extension
     to add modifiers and to be consistent with the other statement
     properties, the different types of retention are modeled by a class
     and a set of subClasses -->

<rdf:Property rdf:about="&p3p;retention">
  <rdfs:label xml:lang="en">retention</rdfs:label>
  <rdfs:comment>the kind of retention policy that applies to the data referenced by the subject</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
   <rdfs:range  rdf:resource="&p3p;RetentionPolicy"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;RetentionPolicy">
  <rdfs:label xml:lang="en">Retention Policy</rdfs:label>
  <rdfs:comment xml:lang="en">A kind of retention policy</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Retention-no-retention">
  <rdfs:label xml:lang="en">no retention</rdfs:label>
  <rdfs:comment xml:lang="en">Information is not retained for more than a brief period of time necessary to make use of it during the course of a single online interaction</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Retention"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Retention-stated-purpose">
  <rdfs:label xml:lang="en">stated purpose</rdfs:label>
  <rdfs:comment xml:lang="en">Information is retained to meet the stated purpose</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Retention"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Retention-legal-requirement">
  <rdfs:label xml:lang="en">legal requirement</rdfs:label>
  <rdfs:comment xml:lang="en">As required by law or liability under applicable law: Information is retained to meet a stated purpose, but the retention period is longer because of a legal requirement or liability</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Retention"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Retention-business-practices">
  <rdfs:label xml:lang="en">legal requirement</rdfs:label>
  <rdfs:comment xml:lang="en"> Information is retained under a service provider's stated business practices</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Retention"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Retention-indefinitely">
  <rdfs:label xml:lang="en">legal requirement</rdfs:label>
  <rdfs:comment xml:lang="en">Information is retained for an indeterminate period of time</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Retention"/>
</rdfs:Class>

<!-- Data:  A Statement can have one or more Data properties defining the
   data elements assocaited with the statement.  -->

<rdf:Property rdf:about="&p3p;data">
  <rdfs:label xml:lang="en">data</rdfs:label>
  <rdfs:comment>the data to be transferred or inferred</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
   <rdfs:range  rdf:resource="&p3p;DataElement"/>
</rdf:Property>

<!-- A data element can be optional which is indicated by giving it an
     rdf:type property with value p3p:Optional.  -->

<rdfs:Class rdf:about="&p3p;Optional">
  <rdfs:label xml:lang="en">optional</rdfs:label>
  <rdfs:comment>whether or not the site requires visitors to submit this data element</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Data-optional">
  <rdfs:label xml:lang="en">optional</rdfs:label>
  <rdfs:comment xml:lang="en">whether or not the site requires visitors to submit this data element</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<p3p:Data-optional rdf:about="&p3p;Data-optional-no">
  <rdfs:label xml:lang="en">no</rdfs:label>
  <rdfs:comment xml:lang="en">The site does not require visitors to submit this data element</rdfs:comment>
</p3p:Data-optional>

<p3p:Data-optional rdf:about="&p3p;Data-optional-yes">
  <rdfs:label xml:lang="en">no</rdfs:label>
  <rdfs:comment xml:lang="en">The site does require visitors to submit this data element</rdfs:comment>
</p3p:Data-optional>

<rdf:Property rdf:about="&p3p;data-element">
  <rdfs:label xml:lang="en">data class</rdfs:label>
  <rdfs:comment>The data element/set to which the statement applies.</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Data"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;data-value">
  <rdfs:label xml:lang="en">value</rdfs:label>
  <rdfs:comment>The actual data</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Data"/>
   <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>


<!-- Categories.  Each Data resource may have one or more category properties
     indicating the categories of data.  Categories of data are represented
     by a type hierarchy again for consistency and future extension. -->

<rdf:Property rdf:about="&p3p;category">
  <rdfs:label xml:lang="en">category</rdfs:label>
  <rdfs:comment>hints to users and user agents as to the intended uses of the data</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;DataElement"/>
   <rdfs:range  rdf:resource="&p3p;Category"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;Category">
  <rdfs:label xml:lang="en">Category</rdfs:label>
  <rdfs:comment xml:lang="en">A classification of data</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-physical">
  <rdfs:label xml:lang="en">physical</rdfs:label>
  <rdfs:comment xml:lang="en">Information that allows an individual to be contacted or located in the physical world - such as telephone number or address.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-online">
  <rdfs:label xml:lang="en">online</rdfs:label>
  <rdfs:comment xml:lang="en">Information that allows an individual to be contacted or located on the Internet - such as email</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-uniqueid">
  <rdfs:label xml:lang="en">unique id</rdfs:label>
  <rdfs:comment xml:lang="en">Non-financial identifiers, excluding government-issued identifiers, issued for purposes of consistently identifying or recognizing the individual</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-purchase">
  <rdfs:label xml:lang="en">purchase</rdfs:label>
  <rdfs:comment xml:lang="en">Information actively generated by the purchase of a product or service, including information about the method of payment</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-financial">
  <rdfs:label xml:lang="en">financial</rdfs:label>
  <rdfs:comment xml:lang="en">Information about an individual's finances including account status and activity information such as account balance, payment or overdraft history, and information about an individual's purchase or use of financial instruments including credit or debit card information</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-computer">
  <rdfs:label xml:lang="en">computer</rdfs:label>
  <rdfs:comment xml:lang="en">Information about the computer system that the individual is using to access the network - such as the IP number, domain name, browser type or operating system.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-navigation">
  <rdfs:label xml:lang="en">navigation</rdfs:label>
  <rdfs:comment xml:lang="en">Data passively generated by browsing the Web site - such as which pages are visited, and how long users stay on each page</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-interactive">
  <rdfs:label xml:lang="en">interactive</rdfs:label>
  <rdfs:comment xml:lang="en">Data actively generated from or reflecting explicit interactions with a service provider through its site - such as queries to a search engine, or logs of account activity</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-demographic">
  <rdfs:label xml:lang="en">demographic</rdfs:label>
  <rdfs:comment xml:lang="en">Data about an individual's characteristics - such as gender, age, and income</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-content">
  <rdfs:label xml:lang="en">content</rdfs:label>
  <rdfs:comment xml:lang="en">The words and expressions contained in the body of a communication - such as the text of email, bulletin board postings, or chat room communications</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>


<rdfs:Class rdf:about="&p3p;Category-state">
  <rdfs:label xml:lang="en">state</rdfs:label>
  <rdfs:comment xml:lang="en">Mechanisms for maintaining a stateful session with a user or automatically recognizing users who have visited a particular site or accessed particular content previously - such as HTTP cookies</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-political">
  <rdfs:label xml:lang="en">political</rdfs:label>
  <rdfs:comment xml:lang="en">Membership in or affiliation with groups such as religious organizations, trade unions, professional associations, political parties, etc</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-health">
  <rdfs:label xml:lang="en">health</rdfs:label>
  <rdfs:comment xml:lang="en">information about an individual's physical or mental health, sexual orientation, use or inquiry into health care services or products, and purchase of health care services or products</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-preference">
  <rdfs:label xml:lang="en">preference</rdfs:label>
  <rdfs:comment xml:lang="en">Data about an individual's likes and dislikes - such as favorite color or musical tastes</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-location">
  <rdfs:label xml:lang="en">location</rdfs:label>
  <rdfs:comment xml:lang="en">Information that can be used to identify an individual's current physical location and track them as their location changes - such as GPS position data</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-government">
  <rdfs:label xml:lang="en">government</rdfs:label>
  <rdfs:comment xml:lang="en">Identifiers issued by a government for purposes of consistently identifying the individual</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;Category-other">
  <rdfs:label xml:lang="en">other</rdfs:label>
  <rdfs:comment xml:lang="en">Other types of data not captured by the above definitions</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;Category"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;category-explanation">
  <rdfs:label xml:lang="en">explanation</rdfs:label>
  <rdfs:comment>A human readable explanation of the category</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Category-other"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!--
   P3P Data Schema Class Hierarchy
-->

<rdfs:Class rdf:about="&p3p;DataSchemaComponent">
  <rdfs:label xml:lang="en">Data Schema or Structure</rdfs:label>
  <rdfs:comment>The union of Data Elements and Data Structures</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;DataElement">
  <rdfs:label xml:lang="en">Data Element</rdfs:label>
  <rdfs:comment>A specific item of data a service might collect</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataSchemaComponent"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;DataStructure">
  <rdfs:label xml:lang="en">Data Structure</rdfs:label>
  <rdfs:comment>a named, abstract definition of a group of data elements</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataSchemaComponent"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;UnstructuredDataElement">
  <rdfs:label xml:lang="en">Unstructured Data Element</rdfs:label>
  <rdfs:comment>A data element with no component parts</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataElement"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;StructuredDataElement">
  <rdfs:label xml:lang="en">Structured Data Element</rdfs:label>
  <rdfs:comment>A data element with component parts</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataElement"/>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdfs:Class rdf:about="&p3p;VariableCategory">
  <rdfs:label xml:lang="en">Variable Category</rdfs:label>
  <rdfs:comment>A data schema component with no fixed categories.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataSchemaComponent"/>
</rdfs:Class>

<!-- 
  Data Schema Properties 
-->

<rdf:Property rdf:about="&p3p;dataStructureComponent">
  <rdfs:label xml:lang="en">component</rdfs:label>
  <rdfs:comment>A part of a data structure</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;DataStructure"/>
  <rdfs:range  rdf:resource="&p3p;DataElement"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dscCategory">
  <rdfs:label xml:lang="en">category</rdfs:label>
  <rdfs:comment>Assigns a data category to a data element or data structure</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;DataSchemaComponent"/>
  <rdfs:range  rdf:resource="&p3p;Category"/>
</rdf:Property>

<!-- 
     Basic Data Structures 
-->

<!--
      Basic Dataset Dates
 -->

<rdfs:Class rdf:about="&p3p;Date">
  <rdfs:label xml:lang="en">Date</rdfs:label>
  <rdfs:comment>Specifies a date</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;date.ymd">
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.ymd">
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.ymd.year">
  <rdfs:label xml:lang="en">Year</rdfs:label>
  <rdfs:comment>Year</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.ymd"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.ymd.year">
      <rdfs:label xml:lang="en">Year</rdfs:label>
      <rdfs:subClassOf rdf:resource="UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.ymd.month">
  <rdfs:label xml:lang="en">Month</rdfs:label>
  <rdfs:comment>Month</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.ymd"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.ymd.month">
      <rdfs:label xml:lang="en">Month</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.ymd.day">
  <rdfs:label xml:lang="en">Day</rdfs:label>
  <rdfs:comment>Day</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.ymd"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.ymd.day">
      <rdfs:label xml:lang="en">Day</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.hms">
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.hms">
      <rdfs:subClassOf rdf:resource="p3p:StructuredDataElement"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.hms.hour">
  <rdfs:label xml:lang="en">Hour</rdfs:label>
  <rdfs:comment>Hour</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.hms"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.hms.hour">
      <rdfs:label xml:lang="en">Hour</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.hms.minute">
  <rdfs:label xml:lang="en">Minute</rdfs:label>
  <rdfs:comment>Minute</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.hms"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.hms.minute">
      <rdfs:label xml:lang="en">Minute</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.hms.second">
  <rdfs:label xml:lang="en">Second</rdfs:label>
  <rdfs:comment>Second</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date.hms"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.hms.second">
      <rdfs:label xml:lang="en">Second</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.fractionsecond">
  <rdfs:label xml:lang="en">Fraction of Second</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.fractionsecond">
      <rdfs:label xml:lang="en">Fraction of Second</rdfs:label>
      <rdfs:subClassOf rdf:resource="UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;Date.timezone">
  <rdfs:label xml:lang="en">Time Zone</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Date.timezone">
      <rdfs:label xml:lang="en">Time Zone</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--
  Login Datastructure
-->

<rdfs:Class rdf:about="&p3p;Login">
  <rdfs:label xml:lang="en">Login</rdfs:label>
  <rdfs:comment xml:lang="en">Specify information (IDs and passwords) for computer systems and Web sites which require authentication</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;login.id">
  <rdfs:label xml:lang="en">Login ID</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Login"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Login.id">
      <rdfs:label xml:lang="en">Login Id</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;login.password">
  <rdfs:label xml:lang="en">Login Password</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Login"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Login.id">
      <rdfs:label xml:lang="en">Login Password</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--
  Personname Datastructure
-->

<rdfs:Class rdf:about="&p3p;Personname">
  <rdfs:label xml:lang="en">Person Name</rdfs:label>
  <rdfs:comment xml:lang="en">Information about the naming of a person</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;personname.prefix">
  <rdfs:label xml:lang="en">Name Prefix</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.prefix">
      <rdfs:label xml:lang="en">Prefix</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;personname.given">
  <rdfs:label xml:lang="en">Given Name (First Name)</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.given">
      <rdfs:label xml:lang="en">Given Name (First Name)</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;personname.family">
  <rdfs:label xml:lang="en">Family Name (Last Name)</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.family">
      <rdfs:label xml:lang="en">Family Name (Last Name)</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;personname.middle">
  <rdfs:label xml:lang="en">Middle Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.middle">
      <rdfs:label xml:lang="en">Middle Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;personname.suffix">
  <rdfs:label xml:lang="en">Name Suffix</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.suffix">
      <rdfs:label xml:lang="en">Name Suffix</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;personname.nickname">
  <rdfs:label xml:lang="en">Nickname</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Personname"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Personname.nickname">
      <rdfs:label xml:lang="en">Nickname</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--
  Certificate Datastructure
-->

<rdfs:Class rdf:about="&p3p;Certificate">
  <rdfs:label xml:lang="en">Certificate</rdfs:label>
  <rdfs:comment xml:lang="en">identity certificates (like, for example, X.509)</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;certificate.key">
  <rdfs:label xml:lang="en">Certificate Key</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Certificate"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Certificate.key">
      <rdfs:label xml:lang="en">Certificate Key</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;certificate.format">
  <rdfs:label xml:lang="en">Certificate Format</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Certificate"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Certificate.format">
      <rdfs:label xml:lang="en">Certificate Format</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--
  Telephone Number Datastructure
-->

<rdfs:Class rdf:about="&p3p;Telephonenum">
  <rdfs:label xml:lang="en">Telephone Number</rdfs:label>
  <rdfs:comment xml:lang="en">Telephone number</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;telephonenum.intcode">
  <rdfs:label xml:lang="en">International Telephone Code</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telephonenum"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Telephonenum.intcode">
      <rdfs:label xml:lang="en">International Telephone Code</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telephonenum.loccode">
  <rdfs:label xml:lang="en">Local Telephone Area Code</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telephonenum"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Telephonenum.loccode">
      <rdfs:label xml:lang="en">Local Telephone Area Code</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telephonenum.number">
  <rdfs:label xml:lang="en">Telephone Number</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telephonenum"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Telephonenum.number">
      <rdfs:label xml:lang="en">Telephone Number</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telephonenum.ext">
  <rdfs:label xml:lang="en">Telephone Extension</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telephonenum"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Telephonenum.ext">
      <rdfs:label xml:lang="en">Telephone Extension</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telephonenum.comment">
  <rdfs:label xml:lang="en">Telephone Optional Comments</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telephonenum"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Telephonenum.comment">
      <rdfs:label xml:lang="en">Telephone Optional Comments</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  Contact Information
-->

<rdfs:Class rdf:about="&p3p;Contact">
  <rdfs:label xml:lang="en">Contact</rdfs:label>
  <rdfs:comment xml:lang="en">Contact information.</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;contact.postal">
  <rdfs:label xml:lang="en">Postal Address Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Contact"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Contact.postal">
      <rdfs:label>Postal Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Postal"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;contact.telecom">
  <rdfs:label xml:lang="en">Telecommunications Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Contact"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Contact.telecom">
      <rdfs:label>Telecommunications Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Telecom"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;contact.online">
  <rdfs:label xml:lang="en">Online Address Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Contact"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Contact.online">
      <rdfs:label>Online Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  Postal Datastructure
-->

<rdfs:Class rdf:about="&p3p;Postal">
  <rdfs:label xml:lang="en">Postal</rdfs:label>
  <rdfs:comment xml:lang="en">A postal mailing address</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;postal.name">
  <rdfs:label xml:lang="en">Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.name">
      <rdfs:label>Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Personname"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.street">
  <rdfs:label xml:lang="en">Street Address</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.name">
      <rdfs:label>Street Address</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.city">
  <rdfs:label xml:lang="en">City</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.city">
      <rdfs:label>City</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.stateprov">
  <rdfs:label xml:lang="en">State or Province</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.stateprov">
      <rdfs:label>State or Province</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.postalcode">
  <rdfs:label xml:lang="en">Postal Code</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.postalcode">
      <rdfs:label>Postal Code</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.country">
  <rdfs:label xml:lang="en">Country Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.country">
      <rdfs:label>Country Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;postal.organization">
  <rdfs:label xml:lang="en">Organization Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Postal"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Postal.organization">
      <rdfs:label>Organization Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  Telecom
-->

<rdfs:Class rdf:about="&p3p;Telecom">
  <rdfs:label xml:lang="en">Telecom</rdfs:label>
  <rdfs:comment xml:lang="en">telecommunication information about a person.
</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;telecom.telephone">
  <rdfs:label xml:lang="en">Telephone Number</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telecom"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Telecom.telephone">
      <rdfs:label>Telephone Number</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Telephonenum"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telecom.fax">
  <rdfs:label xml:lang="en">Fax Number</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telecom"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Telecom.fax">
      <rdfs:label>Fax Number</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Telephonenum"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telecom.mobile">
  <rdfs:label xml:lang="en">Mobile Telephone Number</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telecom"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Telecom.mobile">
      <rdfs:label>Mobile Telephone Number</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Telephonenum"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;telecom.pager">
  <rdfs:label xml:lang="en">Pager Number</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Telecom"/>
  <rdfs:range>
    <rdfs:Class  rdf:about="&p3p;Telecom.pager">
      <rdfs:label>Pager Number</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Telephonenum"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  Online Datastructure
-->

<rdfs:Class rdf:about="&p3p;Online">
  <rdfs:label xml:lang="en">Online</rdfs:label>
  <rdfs:comment xml:lang="en">Specifies online information about a person</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;online.email">
  <rdfs:label xml:lang="en">Email Address</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Online"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Online.email">
      <rdfs:label xml:lang="en">Email Address</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;online.uri">
  <rdfs:label xml:lang="en">Home Page Address</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Online"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Online.uri">
      <rdfs:label xml:lang="en">Home Page Address</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  URI Datastructure
-->

<rdfs:Class rdf:about="&p3p;Uri">
  <rdfs:label xml:lang="en">URI</rdfs:label>
  <rdfs:comment xml:lang="en">Uniform Resource Identifier</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;uri.authority">
  <rdfs:label xml:lang="en">URI Authority</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Uri"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Uri.authority">
      <rdfs:label xml:lang="en">URI Authority</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;uri.stem">
  <rdfs:label xml:lang="en">URI Stem</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Uri"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Uri.stem">
      <rdfs:label xml:lang="en">URI Stem</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;uri.querystring">
  <rdfs:label xml:lang="en">Query Portion of URI</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Uri"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Uri.querystring">
      <rdfs:label xml:lang="en">Query Portion of URI</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  ipaddr Datastructure
-->

<rdfs:Class rdf:about="&p3p;Ipaddr">
  <rdfs:label xml:lang="en">IP Address</rdfs:label>
  <rdfs:comment xml:lang="en">the hostname and IP address of a system</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;ipaddr.hostname">
  <rdfs:label xml:lang="en">Complete Host and Domain Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Ipaddr"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Ipaddr.hostname">
      <rdfs:label xml:lang="en">Complete Host and Domain Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;ipaddr.partialhostname">
  <rdfs:label xml:lang="en">Partial Host Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Ipaddr"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Ipaddr.partialhostname">
      <rdfs:label xml:lang="en">Partial Host Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;ipaddr.fullip">
  <rdfs:label xml:lang="en">Full IP Address</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Ipaddr"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Ipaddr.fullip">
      <rdfs:label xml:lang="en">Full IP Address</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;ipaddr.partialip">
  <rdfs:label xml:lang="en">Partial IP Address</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Ipaddr"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Ipaddr.partialip">
      <rdfs:label xml:lang="en">Partial IP Address</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  loginfo Datastructure
-->

<rdfs:Class rdf:about="&p3p;Loginfo">
  <rdfs:label xml:lang="en">Web Server Log Information</rdfs:label>
  <rdfs:comment xml:lang="en">information typically stored in Web-server access logs</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;loginfo.uri">
  <rdfs:label xml:lang="en">URI of Requested Resources</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.uri">
      <rdfs:label xml:lang="en">URI of Requested Resources</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Uri"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.timestamp">
  <rdfs:label xml:lang="en">Request Timestamp</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.timestamp">
      <rdfs:label xml:lang="en">Request Timestamp</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Date"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.clientip">
  <rdfs:label xml:lang="en">Client&apos;s IP Address or Hostname</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.clientip">
      <rdfs:label xml:lang="en">Client&apos;s IP Address or Hostname</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Ipaddr"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.other">
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.other">
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.other.httpmethod">
  <rdfs:label>HTTP Request Method</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo.other"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.other.httpmethod">
      <rdfs:label>HTTP Request Method</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.other.bytes">
  <rdfs:label>Data Bytes in Response</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo.other"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.other.bytes">
      <rdfs:label>Data Bytes in Response</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;loginfo.other.statuscode">
  <rdfs:label>Response Status Code</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Loginfo.other"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Loginfo.other.statuscode">
      <rdfs:label>Response Status Code</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

  httpinfo Datastructure
-->

<rdfs:Class rdf:about="&p3p;Httpinfo">
  <rdfs:label xml:lang="en">HTTP Info</rdfs:label>
  <rdfs:comment xml:lang="en">information carried by the HTTP protocol which is not covered by the loginfo structure</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;httpinfo.referer">
  <rdfs:label xml:lang="en">Last URI requested by the User</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Httpinfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Httpinfo.uri">
      <rdfs:label xml:lang="en">URI of Requested Resources</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Uri"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;httpinfo.useragent">
  <rdfs:label xml:lang="en">User AgentInformation</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Httpinfo"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Httpinfo.uri">
      <rdfs:label xml:lang="en">User Agent Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<!--

    Base Data Schema

-->

<!--

    User Data
-->

<rdfs:Class rdf:about="&p3p;User">
  <rdfs:label xml:lang="en">User Data Info</rdfs:label>
  <rdfs:comment xml:lang="en">general information about the user</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;user.name">
  <rdfs:label xml:lang="en">User&apos;s Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.name">
      <rdfs:label xml:lang="en">User&apos;s Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Personname"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.bdate">
  <rdfs:label xml:lang="en">User&apos;s Birth Date</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.bdate">
      <rdfs:label xml:lang="en">User&apos;s Birth Date</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Date"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.login">
  <rdfs:label xml:lang="en">User&apos;s Login Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.login">
      <rdfs:label xml:lang="en">User&apos;s Login Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Login"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.cert">
  <rdfs:label xml:lang="en">User&apos;s Identity Certificate</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.cert">
      <rdfs:label xml:lang="en">User&apos;s Identify Certificate</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Cert"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.gender">
  <rdfs:label xml:lang="en">User&apos;s Gender (Male or Female)</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.gender">
      <rdfs:label xml:lang="en">User&apos;s Gender (Male or Female)</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.employer">
  <rdfs:label xml:lang="en">User&apos;s Employer</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.employer">
      <rdfs:label xml:lang="en">User&apos;s Employer</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.department">
  <rdfs:label>Department</rdfs:label>
  <rdfs:comment xml:lang="en">Department or Division of Organization where User is Employed</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.department">
      <rdfs:label xml:lang="en">User&apos;s Employer</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.jobtitle">
  <rdfs:label>User&apos;s Job Title</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.jobtitle">
      <rdfs:label xml:lang="en">User&apos;s Job Title</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.home-info">
  <rdfs:label>User&apos;s Home Contact Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.home-info">
      <rdfs:label xml:lang="en">User&apos;s Home Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Contact"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;user.business-info">
  <rdfs:label>User&apos;s Business Contact Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;User"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;User.business-info">
      <rdfs:label xml:lang="en">User&apos;s Business Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Contact"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>


<!--

    Third Party Data
-->

<rdfs:Class rdf:about="&p3p;Thirdparty">
  <rdfs:label xml:lang="en">Third Party Data Info</rdfs:label>
  <rdfs:comment xml:lang="en">general information about the third Party</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;thirdparty.name">
  <rdfs:label xml:lang="en">Third Party&apos;s Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.name">
      <rdfs:label xml:lang="en">Third Party&apos;s Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Personname"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.bdate">
  <rdfs:label xml:lang="en">Third Party&apos;s Birth Date</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.bdate">
      <rdfs:label xml:lang="en">Third Party&apos;s Birth Date</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Date"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.login">
  <rdfs:label xml:lang="en">Third Party&apos;s Login Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.login">
      <rdfs:label xml:lang="en">Third Party&apos;s Login Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Login"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.cert">
  <rdfs:label xml:lang="en">Third Party&apos;s Identity Certificate</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.cert">
      <rdfs:label xml:lang="en">Third Party&apos;s Identify Certificate</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Cert"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.gender">
  <rdfs:label xml:lang="en">Third Party&apos;s Gender (Male or Female)</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.gender">
      <rdfs:label xml:lang="en">Third Party&apos;s Gender (Male or Female)</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.employer">
  <rdfs:label xml:lang="en">Third Party&apos;s Employer</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.employer">
      <rdfs:label xml:lang="en">Third Party&apos;s Employer</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.department">
  <rdfs:label>Department</rdfs:label>
  <rdfs:comment xml:lang="en">Department or Division of Organization where Third Party is Employed</rdfs:comment>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.department">
      <rdfs:label xml:lang="en">Third Party&apos;s Employer</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.jobtitle">
  <rdfs:label>Third Party&apos;s Job Title</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.jobtitle">
      <rdfs:label xml:lang="en">Third Party&apos;s Job Title</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.home-info">
  <rdfs:label>Third Party&apos;s Home Contact Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.home-info">
      <rdfs:label xml:lang="en">Third Party&apos;s Home Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Contact"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;thirdparty.business-info">
  <rdfs:label>Third Party&apos;s Business Contact Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Thirdparty"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Thirdparty.business-info">
      <rdfs:label xml:lang="en">Third Party&apos;s Business Contact Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Contact"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>


<!--
 
   BUSINESS DATASET
-->

<rdfs:Class rdf:about="&p3p;Business">
  <rdfs:label xml:lang="en">Business Information</rdfs:label>
  <rdfs:comment xml:lang="en">a subset of user data relevant for organizations</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;business.name">
  <rdfs:label xml:lang="en">Organization Name</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Business"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Business.name">
      <rdfs:label xml:lang="en">Organization Name</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;business.department">
  <rdfs:label xml:lang="en">Department or Division of Organization</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Business"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Business.department">
      <rdfs:label xml:lang="en">Department or Division of Organization</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;business.cert">
  <rdfs:label xml:lang="en">Organization Identity Certificate</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Business"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Business.cert">
      <rdfs:label xml:lang="en">Organization Identity Certificate</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Cert"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-uniqueid"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;business.contact-info">
  <rdfs:label xml:lang="en">Contact Information for the Organization</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Business"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Business.contact-info">
      <rdfs:label xml:lang="en">Contact Information for the Organization</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Contact"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-physical"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-online"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-demographic"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>


<!--
 
   Dynamic Data
-->

<rdfs:Class rdf:about="&p3p;Dynamic">
  <rdfs:label xml:lang="en">Dynamic Information</rdfs:label>
  <rdfs:comment xml:lang="en">Data elements that do not have fixed value</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;dynamic.clickstream">
  <rdfs:label xml:lang="en">Click-stream Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.clickstream">
      <rdfs:label xml:lang="en">Click-stream Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Loginfo"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.http">
  <rdfs:label xml:lang="en">HTTP Protocol Information</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.http">
      <rdfs:label xml:lang="en">HTTP Protocol Information</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;StructuredDataElement"/>
      <rdfs:subClassOf rdf:resource="&p3p;Httpinfo"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-computer"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.clientevents">
  <rdfs:label xml:lang="en">User&apos;s Interaction with Resources</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.clientevents">
      <rdfs:label xml:lang="en">User&apos;s Interaction with Resources</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-navigation"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.cookies">
  <rdfs:label xml:lang="en">Use of HTTP Cookies</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.cookies">
      <rdfs:label xml:lang="en">User of HTTP Cookies</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.miscdata">
  <rdfs:label xml:lang="en">Miscellaneous</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.miscdata">
      <rdfs:label xml:lang="en">Miscellaneous</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <rdf:type rdf:resource="&p3p;VariableCategory"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.searchtext">
  <rdfs:label xml:lang="en">Search Terms</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;Dynamic.searchtext">
      <rdfs:label xml:lang="en">Search Terms</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-interactive"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>

<rdf:Property rdf:about="&p3p;dynamic.interactionrecord">
  <rdfs:label xml:lang="en">Transaction History</rdfs:label>
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Dynamic"/>
  <rdfs:range>
    <rdfs:Class rdf:about="&p3p;dynamic.interactionrecord">
      <rdfs:label xml:lang="en">Transaction History</rdfs:label>
      <rdfs:subClassOf rdf:resource="&p3p;UnstructuredDataElement"/>
      <p3p:dscCategory rdf:resource="&p3p;Category-interactive"/>
    </rdfs:Class>
  </rdfs:range>
</rdf:Property>


<!-- The Image class and its properties -->

<rdfs:Class rdf:about="&p3p;Image">
  <rdfs:label xml:lang="en">Image</rdfs:label>
  <rdfs:comment xml:lang="en">An image or logo</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdf:Property rdf:about="&p3p;imageWidth">
  <rdfs:label xml:lang="en">Width</rdfs:label>
  <rdfs:comment xml:lang="en">Width in pixels of the image</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Image"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;imageHeight">
  <rdfs:label xml:lang="en">Height</rdfs:label>
  <rdfs:comment xml:lang="en">Height in pixels of the image</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Image"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;imageAltText">
  <rdfs:label xml:lang="en">Alternative Text</rdfs:label>
  <rdfs:comment xml:lang="en">A very short text alternative to the image</rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Image"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!-- Generic Properties -->

<rdf:Property rdf:about="&p3p;shortDescription">
  <rdfs:label xml:lang="en">Short Description</rdfs:label>
  <rdfs:comment xml:lang="en">A short human readable description of the subject</rdfs:comment>
  <rdfs:domain rdf:resource="&rdfs;Resource"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;longDescription">
  <rdfs:label xml:lang="en">Long Description</rdfs:label>
  <rdfs:comment xml:lang="en">A human readable description of the subject</rdfs:comment>
  <rdfs:domain rdf:resource="&rdfs;Resource"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;img">
  <rdfs:label xml:lang="en">Image</rdfs:label>
  <rdfs:comment xml:lang="en">An image or logo associated with the subject</rdfs:comment>
  <rdfs:domain rdf:resource="&rdfs;Resource"/>
  <rdfs:range  rdf:resource="&p3p;Image"/>
</rdf:Property>

</rdf:RDF>

<!--
  $Log: p3p-rdf-schema.xml,v $
  Revision 1.6  2001/11/26 18:57:40  bwm
  Corrected class structure for access and purpose
  Changed recipient to class structure

  Revision 1.5  2001/11/26 17:21:16  bwm
  Modified PurposeRequired to be a subclass of Class, not an instance of Class

  Revision 1.4  2001/11/26 17:11:10  bwm
  Modified Purpose to be a subclass of Class, not an instance of Class and
  all instances to be instances of Purpose.

  Revision 1.3  2001/11/26 15:42:18  bwm
  The NONIDENTIFIABLE element now represented by a Class

  Revision 1.2  2001/11/26 14:18:14  bwm
  Modified the access property to take a class as value.
  Defined InfoType to be a subClass of Class

-->


