<?xml version="1.0"?>

<!--
  An RDF Schema for P3P

  $Id$

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

  Changes
  =======
 
  1) Removed use of language selectors - go with using the
     content language mechanism from the 2.4.2 of the spec.

  2) Added loads of new stuff

  3) Renamed Disputes

  4) Modified the way remedies work

  Issues
  ======


  5) Sometimes privacy policies are about services, sometime about
     web sites.  Is there a difference?

  6) Whats the difference between Court and Applicable law in the
     Dispute element?

  7) 5.3.5.3 describes Online as a structure with contact information
     about a *person*.  Online may be used for organisations.

  8) I&quot;m uncertain about the range of the entity property.

  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.

 10) Use a bag to collect remedies

 13) How well does this model align with just running P3P through an
     RDF parser without transformation?

 16) Oops - there is no such thing rdfs:description.

 17) How do we handle extensions?

 18) Should the access values be represented by types?

 19) Should we collect purposes into a container?

 20) Consistency in the use of containers to collect properties

 21) Does recipient-description need to be a separate property?

 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 '#'

 Decisions
 =========

 1)  Decided to remove the language selector mechanism and stick with
     the way things are done in the P3P spec. 

 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.

 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.

TODO
====

  &p3p;LegalEntity



-->

<!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>

<rdf:Property rdf:about="&p3p;test">
  <rdfs:label xml:lang="en">test</rdfs:label>
  <rdfs:comment xml:lang="en">
    Used for testing purposes.  The presence of a test property,
    whatever its value, indicates that the policy is just an
    example and as such it MUST be ignored.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Policy"/>
</rdf:Property>

<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;LegalEntity"/>
</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.

  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;Resource"/>
</rdfs:Class>

<rdfs:Class 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-None"/>
</rdfs:Class>

<rdfs:Class 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;InfoType"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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;InfoType"/>
</rdfs:Class>

<!-- 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: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="&rdf;Resource"/>
</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 value of the non-identifiable property does not matter.  The mere
     presence of the property is sufficient -->

<rdf:Property rdf:about="&p3p;non-identifiable">
  <rdfs:label xml:lang="en">Non Identifiable</rdfs:label>
  <rdfs:comment>There is no data or no identifiable data collected.</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Statement"/>
</rdf:Property>

<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="&rdfs;Literal"/>
</rdf:Property>

<!-- Purposes is a class with a bunch of subClasses for different kinds of
     purpose -->

<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="&rdf;Resource"/>
</rdfs:Class>

<rdfs:Class 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">nformation 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<rdfs:Class 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"/>
</rdfs:Class>

<!-- Optional property modifying purpose -->

<rdf:Property rdf:about="&p3p;purposeRequired">
  <rdfs:label xml:lang="en">Required</rdfs:label>
  <rdfs:comment>Defines whether the purpose is a required practice for the site</rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Purpose"/>
   <rdfs:range  rdf:resource="&p3p;PurposeRequired"/>
</rdf:Property>

<!-- an enumerated type of the values purposeRequired can take -->

<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="&rdf;Resource"/>
</rdfs:Class>

<p3p:PurposeRequired 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>
</p3p:PurposeRequired>

<p3p:PurposeRequired 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>
</p3p:PurposeRequired>

<p3p:PurposeRequired 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>
</p3p:PurposeRequired>

<!-- Recipients are handled by allowing multiple recipient properties
     of a Statement, each of which indicates a type of recipient. Different
     kinds of recipient are represented by different subClasses of the
     Recipient Class -->

<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;Recipient"/>
</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="rdf:Resource"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>

<rdfs:Class 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="rdf:Recipient"/>
</rdfs:Class>


<!-- properties of Recipient -->

<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;Recipient"/>
   <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!-- Optional property modifying recipient -->

<rdf:Property rdf:about="&p3p;recipientRequired">
  <rdfs:label xml:lang="en">Required</rdfs:label>
  <rdfs:comment>Defines whether the recipient </rdfs:comment>
   <rdfs:domain rdf:resource="&p3p;Recipient"/>
   <rdfs:range  rdf:resource="&p3p;RecipientRequired"/>
</rdf:Property>

<!-- an enumerated type of the values recipientRequired can take -->

<rdfs:Class rdf:about="&p3p;RecipientRequired">
  <rdfs:label xml:lang="en">Required</rdfs:label>
  <rdfs:comment xml:lang="en">Defines whether the recipient is required</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdf;Resource"/>
</rdfs:Class>

<p3p:RecipientRequired rdf:about="&p3p;recipient-always">
  <rdfs:label xml:lang="en">always</rdfs:label>
  <rdfs:comment xml:lang="en">The reciepient is always required</rdfs:comment>
</p3p:RecipientRequired>

<p3p:RecipientRequired 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>
</p3p:RecipientRequired>

<p3p:RecipientRequired 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>
</p3p:RecipientRequired>

<!-- 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="&rdf;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 associated 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;Data"/>
</rdf:Property>

<rdfs:Class rdf:about="&p3p;Data">
  <rdfs:label xml:lang="en">Data</rdfs:label>
  <rdfs:comment xml:lang="en">the data to be transferred or inferred</rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdf;Resource"/>
</rdfs:Class>

<!-- one would naturally make the value of the data-optional property an XML
     schema boolean.  However, RDFCore has not yet decided how to handle such
     values, so for now, define specific p3p values.  -->

<rdf:Property rdf:about="&p3p;data-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:domain rdf:resource="&p3p;Data"/>
   <rdfs:range  rdf:resource="&p3p;Data-optional"/>
</rdf:Property>

<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="&rdf;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;Data"/>
   <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="&rdf;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="&rdf;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;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: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;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;DataSchemaComponent"/>  <!-- @@too liberal -->
</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 Dataset Dates
 -->

<p3p:DataStructure 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"/>
</p3p:DataStructure>

<rdf:Property rdf:about="&p3p;date.ymd">
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range  rdf:resource="&p3p;Date.ymd"/>
</rdf:Property>

<p3p:DataStructure rdf:about="&p3p;Date.ymd">
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</p3p:DataStructure>

<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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&p3p;date.hms">
  <rdfs:subPropertyOf rdf:resource="&p3p;dataStructureComponent"/>
  <rdfs:domain rdf:resource="&p3p;Date"/>
  <rdfs:range  rdf:resource="&p3p;Date.hms"/>
</rdf:Property>

<p3p:DatStructure rdf:about="&p3p;Date.hms">
  <rdfs:subClassOf rdf:resource="&p3p;DataStructure"/>
</p3p:DatStructure>

<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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!--
  Base dataset Login Datastructure
-->

<p3p:DataStructure 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"/>
</p3p:DataStructure>

<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  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<!--
  Base dataset Personname Datastructure
-->

<p3p:Datastructure 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"/>
</p3p:Datastructure>

<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;Login"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</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  rdf:resource="&rdfs;Literal"/>
</rdf:Property>





<!-- 
   BUSINESS DATASET

  @@ categories not yet represented
-->

<rdfs:Class rdf:about="&p3p;Organization">
  <rdfs:label xml:lang="en">Organization</rdfs:label>
  <rdfs:comment xml:lang="en">
    An organisation.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Property rdf:about="&p3p;name">
  <rdfs:label xml:lang="en">name</rdfs:label>
  <rdfs:comment>
    The name of the organization.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Organization"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;department">
  <rdfs:label xml:lang="en">department</rdfs:label>
  <rdfs:comment>
    The name of the department or division of the organization.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Organization"/>
  <rdfs:range  rdf:resource="&rdfs;Literal"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;certificate">
  <rdfs:label xml:lang="en">certificate</rdfs:label>
  <rdfs:comment>
    Organization identity certificate
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Organization"/>
  <rdfs:range  rdf:resource="&rdfs;Resource"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;contact-info">
  <rdfs:label xml:lang="en">contact-info</rdfs:label>
  <rdfs:comment>
    Contact Information for the organization.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Organization"/>
  <rdfs:range  rdf:resource="&p3p;ContactInfo"/>
</rdfs:Property>


<rdfs:Class rdf:about="&p3p;ContactInfo">
  <rdfs:label xml:lang="en">Contact Info</rdfs:label>
  <rdfs:comment xml:lang="en">
    Contact information.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/>
</rdfs:Class>

<rdfs:Property rdf:about="&p3p;postal">
  <rdfs:label xml:lang="en">postal</rdfs:label>
  <rdfs:comment>
    Postal address information
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;ContactInfo"/>
  <rdfs:range  rdf:resource="&p3p;Postal"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;telecom">
  <rdfs:label xml:lang="en">telecom</rdfs:label>
  <rdfs:comment>
    Telecommunications information
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;ContactInfo"/>
  <rdfs:range  rdf:resource="&p3p;Telecom"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;online">
  <rdfs:label xml:lang="en">online</rdfs:label>
  <rdfs:comment>
    Online address information.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;ContactInfo"/>
  <rdfs:range  rdf:resource="&p3p;Online"/>
</rdfs:Property>

<!-- ... @@ ... -->

<rdfs:Class rdf:about="&p3p;Online">
  <rdfs:label xml:lang="en">Online</rdfs:label>
  <rdfs:comment xml:lang="en">
    Online address information.
  </rdfs:comment>
  <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> <!-- @@ fix -->
</rdfs:Class>

<rdfs:Property rdf:about="&p3p;email">
  <rdfs:label xml:lang="en">email</rdfs:label>
  <rdfs:comment>
    email address.
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Online"/>
  <rdfs:range  rdf:resource="&rdfs;Resource"/>
</rdfs:Property>

<rdfs:Property rdf:about="&p3p;uri">
  <rdfs:label xml:lang="en">uri</rdfs:label>
  <rdfs:comment>
    Home page
  </rdfs:comment>
  <rdfs:domain rdf:resource="&p3p;Online"/>
  <rdfs:range  rdf:resource="&rdfs;Resource"/>
</rdfs: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="&rdf;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="&rdf;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="&rdf;Resource"/>
  <rdfs:range  rdf:resource="&p3p;Image"/>
</rdf:Property>

</rdf:RDF>

