W3C

P3P Using the Semantic Web (OWL Ontology, RDF Policy and RDQL Rules)

W3C Working Group Note 3 September 2004

This version:
http://www.w3.org/P3P/2004/OWL/09-p3p_sw.html
Latest version:
http://www.w3.org/TR/p3p-rdfschema
Previous version:
http://www.w3.org/TR/2002/NOTE-p3p-rdfschema-20020125
Editors:
Giles Hogben, JRC

Abstract

This document describes a framework for describing P3P policies according to the semantics described in the P3P 1.0 specification, using the technologies of W3C's Semantic Web initiative. It is supported by an open source demonstration implementation of a P3P user agent using the framework.

Status of This Document

This is a Draft for consideration of the P3P Specification Working Group and of interested parties from the semantic Web community. This Note is not intended to be a normative specification. Instead, it describes how a semantic-web architecture may be applied to P3P. Its principal contributions are an ontology which attempts to capture the semantics of P3P, a description of some of the decisions taken in this process and an architecture for user-agents using this code. It also shows how to implement this ontology in RDF, how to deal with policy-references and a suggested new rule exchange format using RDQL, which I have called SWAPPEL. An example implementation based on a proxy architecture has also been built.

No commitment is made to update this Note. However, if you have comments, please send them to the <giles.hogben@[non-spammers delete]jrc.it>

A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/.


1.0 Introduction

This document specifies an ontology and RDQL rule format for P3P and a framework for using P3P within semantic web applications. The following is a summary P3P taken from the P3P 1.0 specification document.

The Platform for Privacy Preferences Project (P3P) enables Web sites to express their privacy practices in a standard format that can be retrieved automatically and interpreted easily by user agents. P3P user agents will allow users to be informed of site practices (in both machine- and human-readable formats) and to automate decision-making based on these practices when appropriate. Thus users need not read the privacy policies at every site they visit.... It provides a way for a Web site to encode its data-collection and data-use practices in a machine-readable XML format known as a P3P policy.

The use of a formal ontology format such as OWL in conjunction with RDQL (or other RDF query language) has several advantages over the standard implementations of P3P semantics.

  1. It allows for a flexible and general rule format which can search for arbitrary rdf triples. These triples are easily mappable to english language sentences in various registers (e.g. Legal, Business, End-User)

  2. It provides rich possibilities for reasoning about policies using derivations from the P3P ontology, or additional ontologies (e.g. Jurisdictional, data typing, legal etc...). For example legal hints and auditing engines may be more easily created. This would also provide a more solid basis for the several applications which have proposed to use P3P in negotiation scenarios.

  3. It allows the display of automated derivation explanations (why a particular decision was made) using reasoning tracing.

  4. Ontologies can formally define equivalences between concepts in different domains (E.g. Legal, Business and End-User).

  5. OWL has built in extensibility so that user engines can plug in other ontologies to add semantic richness without altering the P3P specification (e.g. Custom data types, geographical and jurisdictional regions etc...)

  6. OWL and RDF can describe much richer semantics than XML. For example OWL describes the problematic relationships of the P3P1.0 data schema with ease and in standard syntax.

This document builds on work done in An RDF Schema for P3P. Perhaps the most notable improvement is the modelling of the P3P Base Data Schema as a class hierarchy, we have cut the size of the the ontology by approximately 5 fold.

1.1 Background to standards used: P3P, RDF, RDFS, OWL and RDQL

These are the specifications used in this document. The diagram at the end of this section gives some idea of how they fit together.

The Platform for Privacy Preferences Project (P3P) enables Web sites to express their privacy practices in a standard format that can be retrieved automatically and interpreted easily by user agents. P3P user agents will allow users to be informed of site practices (in both machine- and human-readable formats) and to automate decision-making based on these practices when appropriate. Thus users need not read the privacy policies at every site they visit.... It provides a way for a Web site to encode its data-collection and data-use practices in a machine-readable XML format known as a P3P policy.

This is the language used to describe P3P Policies. It can be used to describe arbitrary sentences in a logically rigorous manner. It is the basis of the semantic web because it is the syntax for describing how resources relate to each other.

2.0 Overview and Examples

This section provides an overview of an RDF Policy and SWAPPEL ruleset and describes how they are used within a typical interaction. Note that the concepts used in both the RDF Policy and in the SWAPPEL ruleset's RDQL query are defined by the OWL ontology. The following diagram shows how the above standards are used within the experimental implementation of P3P.




Figure 1. Component interactions

In short, The OWL ontology specifies the concepts that may be used within any RDF P3P policy, in much the same way that the P3P 1.0 XML Schema specifies the way XML tags may be used within P3P1.0. One important difference is that the OWL ontology makes statements about the semantics of the concepts used and is not purely syntactic. Using the OWL ontology, RDF P3P policies are written which are then linked to resources using standard P3P policy reference files. We have not specified an RDF syntax for Policy reference files because we do not think the semantics of these are complex enough to justify using RDF. The lighter weight XML syntax is adequate in this case.

User agents define preferences using SWAPPEL, which define sets of rules for matching against a resource's RDF P3P policy. These rules perform an RDQL query on the policy and if they match, the behavior for the rule is executed.

3.0 Sample RDF Policy and Explanation

The following is an example RDF Policy which uses the concepts defined in the OWL ontology. RDF is a directed graph language for describing arbitrary statements based on well-defined semantics. The following is a sketch of the graph that is represented by the RDF below. Note that the unnamed nodes are blank nodes say e.g. “a resource of type 'Entity'”. These are represented in the RDF with


The policy describes an entity with a certain address and contact information, which collects Http and Clickstream information, keeps it only for the stated purpose and does not distribute it to third parties.

<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY
p3p 'http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#'>
<!ENTITY
rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
]>
<rdf:RDF xmlns:rdf="&rdf;" xmlns:p3p="&p3p;">
  <p3p:Policy rdf:ID="forProfilers">
    <p3p:controller>
      <p3p:Entity>
        <p3p:has-data parseType="Collection">
          <p3p:Name>
            <rdf:value>CatalogExample</rdf:value>
          </p3p:Name>
          <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:Street>
            <rdf:value>4000Lincoln Ave.</rdf:value>
          </p3p:Street>
        <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:City>
            <rdf:value>Birmingham</rdf:value>
          </p3p:City>
          <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:Stateprov>
            <rdf:value>MI</rdf:value>
          </p3p:Stateprov>
           <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:Postalcode>
              <rdf:value>48009</rdf:value>
          </p3p:Postalcode>
        <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:Country>
            <rdf:value>USA</rdf:value>
          </p3p:Country>
           <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
        <p3p:has-data parseType="Collection">
          <p3p:Email>
            <rdf:value>catalog@example.com</rdf:value>
          </p3p:Email>
        <rdf:type><p3p:Business/></rdf:type>
        </p3p:has-data>
      </p3p:Entity>
    </p3p:controller>
    <p3p:describes>
      <p3p:Collectionact>
        <p3p:collects>
            <p3p:Data-Group>
        <p3p:may-include-members-of
        rdf:resource="http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#User"/>
        <p3p:may-include-members-of
        rdf:resource="http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#Online"/>
             </p3p:Data-Group>
        </p3p:collects>
        <p3p:purpose>
          <p3p:Admin/>
        </p3p:purpose>
        <p3p:purpose>
          <p3p:Marketing/>
        </p3p:purpose>
      </p3p:Collection>
    </p3p:describes>
    <p3p:disputes-resolved-by>
      <p3p:Independent>
        <p3p:dispute-resolution-uri rdf:resource="http://www.PrivacySeal.example.org"/>
        <p3p:short-description rdf:parseType="Literal">
        http://www.PrivacySeal.example.org</p3p:short-description>
        <p3p:has-image>
          <p3p:Image rdf:about="http://www.PrivacySeal.example.org/Logo.gif">
            <p3p:alt>PrivacySeal's logo</p3p:alt>
          </p3p:Image>
        </p3p:has-image>
      </p3p:Independent>
    </p3p:disputes-resolved-by>
    <p3p:allowsaccess>
      <p3p:Nonident/>
    </p3p:allowsaccess>
  </p3p:Policy>
</rdf:RDF>



4.0 Example SWAPPEL Ruleset

This ruleset looks for any policy which descibes an entity collecting data of type "Dynamic" for marketing purposes. The rule follows the Event Condition Action (ECA) model, with the Event being assumed as a resource access. The condition is contained in the HEAD section of the rule which is an RDQL query. The action is contained in the BODY section of the rule which specifies what action is to be performed on the condition that the HEAD section of the rule matches. For simplicity I have used a first-come-first-served model of conflict resolution (i.e. The first rule in the sequence that fires is the one which is executed). The specification follows the same conflict resolution model as APPEL. The behaviors and the prompt mechanism are also the same as in APPEL, except that they are contained as CDATA within tags named behavior, description etc... This gives more flexibility for extension.

Note that since the Http and Clickstream data described in the policy are subclasses of Dynamic data in the ontology, the decision engine (which can make inferences based on the ontology) automatically returns a match for the first rule against the above policy.



<swappel:RULESET description="Anti Marketing">
  <swappel:RULE>
    <swappel:BODY>
      <swappel:behavior>block</swappel:behavior>
      <swappel:description> Block entities which collect data for marketing.</swappel:description>
      <swappel:prompt>Entity collects data for marketing - do you want to block this page?</swappel:prompt>
    </swappel:BODY>
    <swappel:HEAD language="RDQL">
      SELECT ?x WHERE (?x, rdf:type,p3p:Entity),
      (?x, p3p:performs, ?y),
      (?y, rdf:type, p3p:Collection),
      (?y, p3p:collects, ?dg),
      (?dg, p3p:may-contain-members-of, p3p:Email)
      (?y, p3p:purpose, ?z),
      (?z, rdf:type, p3p:Marketing)
      USING
      p3p for %3Chttp://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#%3E,
      rdf for %3Chttp://www.w3.org/1999/02/22-rdf-syntax-ns#%3E
    </swappel:HEAD>
  </swappel:RULE>
  <swappel:RULE type="default">
    <swappel:BODY>
      <swappel:behavior>block</swappel:behavior>
      <swappel:description>
        The default rule fired
      </swappel:description>
    </swappel:BODY>
  </swappel:RULE>
<swappel:RULESET>

5.0 OWL P3P Ontology Notes

The following were important design decisions taken in modelling P3P semantics with OWL. The owl ontology is given in section 9.

  1. Concepts used in policy reference files are not included. There appears to be little added-value in changing the policy reference file syntax and associated protocols. Policies in RDF documents may still be referred to

  2. Inclusion of policy concept. We decided to include the concept of a policy because of the need to describe the expiration date for the policy. We link the policy with the statements it makes by the relationship of Policy DESCRIBES Collectionpractice and Policy Controller Entity. P3P 1.0 Statements are then RDF statements about the data collection practices of this entity in the given context.

  3. From a formal semantics point of view, ideally, a policy would be linked to the statements in the policy by reifying the statements within the policy and then specifying Policy <states> <rdf:Statement>. However we considered this too cumbersome for policy developers and parsers. We have therefore adopted the semantic of Policy <states> Collection-practice <collects> Data etc... We considered the semantic Policy <applies-to> Entity <performs> Collection etc.... but this does not allow for the case where the same document contains different policies which make different statements about the same entity.

  4. We wanted to avoid at all costs the situation of having a concept for every possible data type in the P3P1.0 Base data schema because this is highly redundant and makes the ontology extremely cumbersome. At first sight, the bds is just a hierarchy of subclasses. However, on closer inspection, this is not so. The BDS is modelled on “Data Structures” - Structured data types which are subsumed by multiple superstructures. So for example Email is subsumed by both User and ThirdParty. It is therefore not a subclass of either. Furthermore the semantic of the P3P policy is not “we collect all/some values from” a data class, but “we may collect any value from” a data class. This turns out to be very complex if not impossible to model using pure OWL, as it involves hypothetical individuals.

    We therefore decided to model it instead using a special P3P relation “may-include-members-of” which holds between the classes of the data typing ontology. We used OWL's transitiveproperty to model the resulting Base Data Schema Hierarchy.

    One further requirement was missing however. That is the requirement to specialize the data types. Statements such as Data-Group x <may-include-members-of> User && Data-Group x <may-include-members-of> Email do not per se carry the semantic that therefore Data-Group may not include members of all transitively included members of User (e.g. contact info etc... ). To get round this problem, we added the following custom rule to JENA's OWL-MICRO ruleset:

#-----------------------------------------------------------------

# P3P Data Schema Subsumption Hierarchy Rule

#-----------------------------------------------------------------

[Remove1:

(?a rdf:type http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#Data-Group),

(?a http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#may-include-members-of ?x)

,notEqual(?a,?x)

,(?a http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#may-include-members-of ?y)

,notEqual(?a,?y)

,(?x http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#may-include-members-of ?y)

,notEqual(?x,?y)

,(?x http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#may-include-members-of ?anyDataClass)

,notEqual(?x,anyDataClass)

-> remove(7)

]



This rule states that only the transitive closure of the leaf data-type classes should be included in inference models.

This is a somewhat inefficient method of achieving the required results as it involves creating transitive closure over the may-include-members-of property and then deleting a large number of properties. We are in the process of developing a rule which will replace this add and remove method by a rule which selects only that part of the transitive closure which is needed.

A prototype rule to achieve this is approximately [still to be tested]:

?X type Data-Group,

?X may-include A,

?X may-include B,

[A may-include C,C may-include D -> A may-include D],

A may-include E,

F may-include G,

notEqual(E,A),

notEqual(E,B)

-> X may-include E


  1. We also still need to add validation rules to this section. (E.g. check that only allowed members of the hierarchy are combined).

    We still need to add validation rules to this section. (E.g. check that only allowed members of the hierarchy are combined).


    b. Categories are modelled as another kind of beast from data types in the P3P1.0 base data schema, but in fact they are just another class of data. The bubble-up rule used for categories in the P3P1.0 BDS appears to be problematic but in fact it can be modelled simply by assigning the leaves of the main hierarchy as “possible members” of the category classes. For example loccode is subclassed to the physical category and URI is assigned to the online category. The bubble-up rule then comes for free as properties (including subclassing) are inherited upwards.

  2. URI is modelled as a separate class when it is a datatype, within the data typing schema, but when it is the address for example of the disputes resolution service, it is modelled using rdf:Resource. The reason is that we wanted to maintain the consistency of the data typing schema, but we wanted to make the uri's used elsewhere immediately machine-processable.

6.0 SWAPPEL Specification

6.1 Introduction

SWAPPEL is a prototype specification for privacy preference rules for P3P policy evaluation and for preference exchange. It consists of a HEAD based on the syntax of APPEL. It represents the behavior, description, prompt and promptmessage as child tags of the rule BODY instead of as attributes of the RULE tag. Instead of APPEL's bespoke policy query matching syntax, it uses a standard query language to match elements of the P3P policy. The query language may be specified, but it is RDQL by default. The format is also conceived as a possible substitute for APPEL in relation to P3P policies by using XPATH instead of RDQL as the query language. This is in any case configurable.

6.2 Rule System

APPEL rules will be replaced by ECA rules of the form. Within the Event Condition Action conceptual framework, the rule format is summarized in pseudo-code as follows:

RULE
     ON:Web Resource Access
     IF:RDQL QUERY returns non null result set
     ACTION: Either
      Perform Request Action B (Type P3P Behavior)
      End
       Or
    Request User PROMPT which may consist of:
       Message
       RDQL Derivation
       Prompt:User Prompt -
        ON:User Reply
         IF: Positive
            ACTION: Request Action B (Type P3P Behavior)
            End:
         IF: Negative
            ACTION:Ignore this rule and continue to the next one
            Continue to next rule

  

A default rule is always included in the set. This is a rule without a condition (head) section.

We may consider adding a priority to the behavior to replace the first-come-first-served conflict resolution algorithm currently used. For a sample ruleset, see section 4.0 of this specification.

Rule Syntax

The RULESET Element

Description attribute

A short natural language explanation that can be displayed by the user agent when the ruleset gets selected, or to help debugging a rulefile.

The RULE Element

Basic element of the ruleset containing a HEAD (if not a default rule) and BODY – specifying conditions under which a certain behavior should be carried out by the calling program.

The behavior Element (mandatory element)

The value of this element denotes the behavior that should be carried out by the calling program if the expressions match the evidence.

The description Element

A short natural language explanation that can be displayed by the user agent when the rule gets executed, or to help debugging a rulefile. Note that a separate promptmsg should be used in case the user should be prompted for a decision.

The prompt Element

Indicates whether a prompt message should be displayed to the user. If this element is not present, no prompt message is displayed. If it is present, then its value is a short natural language explanation or question that can be displayed by the user agent when the user should be prompted for a decision. Note that the description field can be used to hold a brief summary of the rule for debugging or informational purposes.

The HEAD element

This expresses the condition which must be fulfilled for the BODY element to be executed. The condition, contained in the value of this tag is expressed in a query in the query language described by the language attribute. If the query returns a non-null result set then the rule is determined to have fired. The default language is RDQL.

Language attribute

The language of the query which determines the satisfaction of the rule condition.

Issues

Using the term of RDQL syntax involves angle brackets which must be escaped in XML – this is cumbersome for rule writers.

7.0 Implementation Resources

A sample implementation is available for download (and is described) by http://p3p.jrc.it/downloads/swproxy.php

The Open Source P3P toolkit used to build this implementation can be downloaded from http://p3p.jrc.it/downloads.php

An RDFS Schema for P3P http://www.w3.org/TR/p3p-rdfschema/#Example-3-1

8.0 References

RDF FOR P3P An RDF schema for P3P http://www.w3.org/TR/p3p-rdfschema/
P3P
The Platform for Privacy Preferences 1.0 (P3P1.0) Specification. W3C Working Draft. Cranor, Langheinrich, Marchiori, Presler-Marshall, and Reagle, October 2000.
http://www.w3.org/TR/2000/WD-P3P-20001018/
RDF
Resource Description Framework. W3C RDF/XML Syntax Specification W3C Recommendation 10 February 2004 http://www.w3.org/TR/rdf-syntax-grammar/

RDFS
RDF Vocabulary Description Language 1.0: RDF Schema W3C Recommendation 10 February 2004 http://www.w3.org/TR/rdf-schema/
OWL
OWL Web Ontology Language W3C Recommendation 10 February 2004 http://www.w3.org/TR/owl-ref/
OWL-S
Semantic Markup for Web Services http://www.daml.org/services/owl-s/1.0/owl-s.html
RDQL
RDQL - A Query Language for RDF W3C Member Submission 9 January 2004 http://www.w3.org/Submission/2004/SUBM-RDQL-20040109/


9.0 OWL Ontology

<?xml version="1.0"?>

<!--Ontology written by Giles Hogben, Ioannis Vakalis, Joint Research Centre, Via Enrico Fermi 1, Ispra, Italy -->
<rdf:RDF
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
   xmlns:p3p="http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance#"
    xml:base="http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#"
    xmlns="http://p3p.jrc.it/privacyontology/2004/07/p3powlv1.owl#">
  <owl:Ontology rdf:about="#P3P1.0">
    <owl:versionInfo>1.0</owl:versionInfo>
  <rdfs:comment>P3P1.0 Modelled in OWL</rdfs:comment>
  </owl:Ontology>

    <owl:Class rdf:about="#Policy">
    <rdfs:comment xml:lang="en">The POLICY element contains
    a complete P3P policy. Each P3P policy MUST contain exactly
    one POLICY element. The policy element MUST contain an ENTITY
    element that identifies the legal entity making the
    representation of the privacy practices contained in the
    policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Policy</rdfs:label>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#discuri"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#resource"/>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#opturi"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#resource"/>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#controller"/>
  <owl:allValuesFrom rdf:resource="#Entity"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#allowsaccess"/>
  <owl:allValuesFrom rdf:resource="#Access"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#disputes-resolved-by"/>
  <owl:allValuesFrom rdf:resource="#Dispute-Resolution"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#describes"/>
  <owl:allValuesFrom rdf:resource="#Collection-practice"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:Class rdf:about="#Test">
    <rdfs:comment xml:lang="en">The TEST element is used
    for testing purposes: the presence of TEST in a policy
    indicates that the policy is just an example, and as such, it
    MUST be ignored, and not be considered as a valid P3P
    policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Test</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Policy"/>
  </owl:Class>


  <owl:Class rdf:about="#Entity">
    <rdfs:comment xml:lang="en">The ENTITY element gives a
    precise description of the legal entity making the
    representation of the privacy practices.</rdfs:comment>
    <rdfs:label xml:lang="en">Entity</rdfs:label>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#is-subject"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#has-policy"/>
  <owl:allValuesFrom rdf:resource="#Policy"/>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#has-data"/>
  <owl:allValuesFrom rdf:resource="#Data"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:about="#Access">
    <rdfs:comment xml:lang="en">The ACCESS element
    indicates whether the site provides access to various kinds
    of information.</rdfs:comment>
     <rdfs:label xml:lang="en">Your access to information about you:
    </rdfs:label>
  </owl:Class>



  <owl:Class rdf:about="#Data-Group">
    <rdfs:comment xml:lang="en">Describes the data to be
    transferred or inferred</rdfs:comment>
    <rdfs:label xml:lang="en">Data-Group</rdfs:label>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#may-include-members-of"/>
  <owl:allValuesFrom rdf:resource="#Data"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#recipient"/>
  <owl:allValuesFrom rdf:resource="#Recipient"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#retention"/>
  <owl:allValuesFrom rdf:resource="#Retention"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:about="#Remedies">
    <rdfs:comment xml:lang="en">Each DISPUTES element
    SHOULD contain a REMEDIES element that specifies the possible
    remedies in case a policy breach occurs.</rdfs:comment>
    <rdfs:label xml:lang="en">Remedies</rdfs:label>

  </owl:Class>
    <owl:Class rdf:about="#Law">
    <rdfs:comment xml:lang="en">Remedies for breaches of
    the policy statement will be determined based on the law
    referenced in the human readable
    description.</rdfs:comment>
     <rdfs:label xml:lang="en">We believe that the
     following laws or regulations provide recourse:
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Remedies"/>
    <rdfs:subClassOf rdf:resource="#Dispute-Resolution"/>
  </owl:Class>
  <owl:Class rdf:about="#Correct">
    <rdfs:comment xml:lang="en">Errors or wrongful actions
    arising in connection with the privacy policy will be
    remedied by the service.</rdfs:comment>
    <rdfs:label xml:lang="en"> We will correct any errors
    we make related to the commitments in our privacy policy
</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Remedies"/>
  </owl:Class>
  <owl:Class rdf:about="#Money">
    <rdfs:comment xml:lang="en">If the service provider
    violates its privacy policy it will pay the individual an
    amount specified in the human readable privacy policy or the
    amount of damages.</rdfs:comment>
    <rdfs:label xml:lang="en">We will compensate
    individuals if it is determined that we have violated our
    privacy policy.
</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Remedies"/>
  </owl:Class>
  <owl:Class rdf:about="#Purpose">
    <rdfs:comment xml:lang="en">Each STATEMENT element
    that does not include a NON-IDENTIFIABLE element MUST contain
    a PURPOSE element that contains one or more purposes of data
    collection or uses of data. Sites MUST classify their data
    practices into one or more of the purposes specified below.
Purposes for data processing relevant to the Web.</rdfs:comment>
    <rdfs:label xml:lang="en">The ways your information may be used
</rdfs:label>

  </owl:Class>
  <owl:Class rdf:about="#Recipient">
    <rdfs:comment xml:lang="en">Each STATEMENT element that
    does not include a NON-IDENTIFIABLE element MUST contain a
    RECIPIENT element that contains one or more recipients of the
    collected data. Sites MUST classify their recipients into one
    or more of the six recipients specified.
    RECIPIENT is the legal entity, or domain, beyond the service
    provider and its agents where data may be
    distributed.</rdfs:comment>
    <rdfs:label xml:lang="en">Recipient</rdfs:label>

  </owl:Class>

  <owl:Class rdf:about="#Retention">
    <rdfs:comment xml:lang="en">Each STATEMENT element that
    does not include a NON-IDENTIFIABLE element MUST contain a
    RETENTION element that indicates the kind of retention policy
    that applies to the data referenced in that statement.
    The type of retention policy in effect</rdfs:comment>
    <rdfs:label xml:lang="en">Retention</rdfs:label>
  </owl:Class>

  <!--
  Purpose Classes
  -->


  <owl:Class rdf:about="#Admin">
    <rdfs:comment xml:lang="en">Web Site and System
    Administration: 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:label xml:lang="en">Admin</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Develop">
    <rdfs:comment xml:lang="en">Research and Development:
    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:label xml:lang="en">Develop</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Tailoring">
    <rdfs:comment xml:lang="en">One-time Tailoring:
    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. For example, an online store might suggest
    other items a visitor may wish to purchase based on the items
    he has already placed in his shopping
    basket.</rdfs:comment>
    <rdfs:label xml:lang="en">Tailoring</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Pseudo-Analysis">
    <rdfs:comment xml:lang="en">Pseudonymous Analysis:
    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. For
    example, a marketer may wish to understand the interests of
    visitors to different portions of a Web
    site.</rdfs:comment>
    <rdfs:label xml:lang="en">Pseudo-Analysis</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Pseudo-Decision">
    <rdfs:comment xml:lang="en">Pseudonymous Decision:
    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. For
    example, a marketer may tailor or modify content displayed to
    the browser based on pages viewed during previous
    visits.</rdfs:comment>
    <rdfs:label xml:lang="en">Pseudo-Decision</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Individual-Analysis">
    <rdfs:comment xml:lang="en">Individual Analysis:
    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. For example, an online Web site for a physical
    store may wish to analyze how online shoppers make offline
    purchases.</rdfs:comment>
    <rdfs:label xml:lang="en">Individual-Analysis</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Individual-Decision">
    <rdfs:comment xml:lang="en">Individual Decision:
    Information may be used to determine the habits, interests,
    or other characteristics of individuals and combine it with
    identified data to make a decision that directly affects that
    individual.  For example, an online store suggests items a
    visitor may wish to purchase based on items he has purchased
    during previous visits to the Web site.</rdfs:comment>
    <rdfs:label xml:lang="en">Individual-Decision</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Contact">
    <rdfs:comment xml:lang="en">Contacting Visitors for
    Marketing of Services or Products: 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. This does not include a direct reply to a
    question or comment or customer service for a single
    transaction -- in those cases, &lt;current/> would be
    used. In addition, this does not include marketing via
    customized Web content or banner advertisements embedded in
    sites the user is visiting -- these cases would be covered by
    the &lt;tailoring/>, &lt;pseudo-analysis/> and
    &lt;pseudo-decision/>, or
    &lt;individual-analysis/> and
    &lt;individual-decision/>
    purposes.</rdfs:comment>
    <rdfs:label xml:lang="en">Contact</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Historical">
    <rdfs:comment xml:lang="en">Historical Preservation:
    Information may be archived or stored for the purpose of
    preserving social history as governed by an existing law or
    policy. This law or policy MUST be referenced in the
    &lt;DISPUTES> element and MUST include a specific
    definition of the type of qualified researcher who can access
    the information, where this information will be stored and
    specifically how this collection advances the preservation of
    history.</rdfs:comment>
    <rdfs:label xml:lang="en">Historical</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Telemarketing">
    <rdfs:comment xml:lang="en">Contacting Visitors for
    Marketing of Services or Products Via Telephone: Information
    may be used to contact the individual via a voice telephone
    call for promotion of a product or service. This does not
    include a direct reply to a question or comment or customer
    service for a single transaction -- in those cases,
    &lt;current/> would be used.</rdfs:comment>
    <rdfs:label xml:lang="en">Telemarketing</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Other-Purpose">
    <rdfs:comment xml:lang="en">Other Uses: Information may
    be used in other ways not captured by the above definitions.
    (A human readable explanation MUST be provided in these
    instances).</rdfs:comment>
    <rdfs:label xml:lang="en">Other-Purpose</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Ours">
    <rdfs:comment xml:lang="en">Ourselves and/or entities
    acting as our agents or entities for whom we are acting as an
    agent: An agent in this instance is defined as a third party
    that processes data only on behalf of the service provider
    for the completion of the stated purposes. (e.g., the service
    provider and its printing bureau which prints address labels
    and does nothing further with the
    information.)</rdfs:comment>
    <rdfs:label xml:lang="en">Ours</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#Same">
    <rdfs:comment xml:lang="en">Legal entities following
    our practices: Legal entities who use the data on their own
    behalf under equable practices. (e.g., consider a service
    provider that grants the user access to collected personal
    information, and also provides it to a partner who uses it
    once but discards it. Since the recipient, who has otherwise
    similar practices, cannot grant the user access to
    information that it discarded, they are considered to have
    equable practices.)</rdfs:comment>
    <rdfs:label xml:lang="en">Same</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#Other-Recipient">
    <rdfs:comment xml:lang="en">Legal entities following
    different practices: Legal entities that are constrained by
    and accountable to the original service provider, but may use
    the data in a way not specified in the service provider's
    practices (e.g., the service provider collects data that is
    shared with a partner who may use it for other purposes.
    However, it is in the service provider's interest to ensure
    that the data is not used in a way that would be considered
    abusive to the users' and its own
    interests.)</rdfs:comment>
    <rdfs:label xml:lang="en">Other-Recipient</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#Delivery">
    <rdfs:comment xml:lang="en">Delivery services possibly
    following different practices: Legal entities performing
    delivery services that may use data for purposes other than
    completion of the stated purpose. This should also be used
    for delivery services whose data practices are
    unknown.</rdfs:comment>
    <rdfs:label xml:lang="en">Delivery</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#Public">
    <rdfs:comment xml:lang="en">Public fora: Public fora
    such as bulletin boards, public directories, or commercial
    CD-ROM directories.</rdfs:comment>
    <rdfs:label xml:lang="en">Public</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#Unrelated">
    <rdfs:comment xml:lang="en">Unrelated third parties:
    Legal entities whose data usage practices are not known by
    the original service provider.</rdfs:comment>
    <rdfs:label xml:lang="en">Unrelated</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Recipient"/>
  </owl:Class>
  <owl:Class rdf:about="#No-Retention">
    <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.
    Information MUST be destroyed following this interaction and
    MUST NOT be logged, archived, or otherwise stored. This type
    of retention policy would apply, for example, to services
    that keep no Web server logs, set cookies only for use during
    a single session, or collect information to perform a search
    but do not keep logs of searches
    performed.</rdfs:comment>
    <rdfs:label xml:lang="en">No-Retention</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Retention"/>
  </owl:Class>
  <owl:Class rdf:about="#Stated-Purpose">
    <rdfs:comment xml:lang="en">For the stated purpose:
    Information is retained to meet the stated purpose. This
    requires information to be discarded at the earliest time
    possible. Sites MUST have a retention policy that establishes
    a destruction time table. The retention policy MUST be
    included in or linked from the site's human-readable privacy
    policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Stated-Purpose</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Retention"/>
  </owl:Class>
  <owl:Class rdf:about="#Legal-Requirement">
    <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. For example, a
    law may allow consumers to dispute transactions for a certain
    time period; therefore a business may for liability reasons
    decide to maintain records of transactions, or a law may
    affirmatively require a certain business to maintain records
    for auditing or other soundness purposes. Sites MUST have a
    retention policy that establishes a destruction time table.
    The retention policy MUST be included in or linked from the
    site's human-readable privacy policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Legal-Requirement</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Retention"/>
  </owl:Class>
  <owl:Class rdf:about="#Indefinitely">
    <rdfs:comment xml:lang="en">Indefinitely: Information
    is retained for an indeterminate period of time. The absence
    of a retention policy would be reflected under this option.
    Where the recipient is a public fora, this is the appropriate
    retention policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Indefinitely</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Retention"/>
  </owl:Class>
  <owl:Class rdf:about="#Business-Practices">
    <rdfs:comment xml:lang="en">Determined by service
    provider's business practice: Information is retained under a
    service provider's stated business practices. Sites MUST have
    a retention policy that establishes a destruction time table.
    The retention policy MUST be included in or linked from the
    site's human-readable privacy policy.</rdfs:comment>
    <rdfs:label xml:lang="en">Business-Practices</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Retention"/>
  </owl:Class>
  <owl:Class rdf:about="#Current">
    <rdfs:comment xml:lang="en">Completion and Support of
    Activity For Which Data Was Provided: 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:label xml:lang="en">Current</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Purpose"/>
  </owl:Class>
  <owl:Class rdf:about="#Collection-practice">
    <rdfs:label xml:lang="en">A collection practice
    described by the policy</rdfs:label>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#has-purpose"/>
  <owl:allValuesFrom rdf:resource="#Purpose"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#has-consequence"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#collected-data"/>
  <owl:allValuesFrom rdf:resource="#Data"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <!-- Types of Access Given by this Policy -->

 <owl:Class rdf:about="#All">
    <rdfs:label xml:lang="en">We give you access to all of
    our information identified with you
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
    <owl:disjointWith rdf:resource="#Contact-and-Other"/>
    <owl:disjointWith rdf:resource="#Ident-Contact"/>
    <owl:disjointWith rdf:resource="#Other-Ident"/>
    <owl:disjointWith rdf:resource="#Nonident"/>
    <owl:disjointWith rdf:resource="#None"/>
  </owl:Class>

  <owl:Class rdf:about="#Contact-and-Other">
   <rdfs:label xml:lang="en">We give you access to your contact
   information and some of our other information identified with you
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
    <owl:disjointWith rdf:resource="#Ident-Contact"/>
    <owl:disjointWith rdf:resource="#Other-Ident"/>
    <owl:disjointWith rdf:resource="#Nonident"/>
    <owl:disjointWith rdf:resource="#None"/>
  </owl:Class>

  <owl:Class rdf:about="#Ident-Contact">
    <rdfs:label xml:lang="en">We give you access to only your contact
    information in our records
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
    <owl:disjointWith rdf:resource="#Other-Ident"/>
    <owl:disjointWith rdf:resource="#Nonident"/>
    <owl:disjointWith rdf:resource="#None"/>
  </owl:Class>

  <owl:Class rdf:about="#Other-Ident">
   <rdfs:label xml:lang="en"> We allow you to access some of our information
   identified with you, but not your contact information
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
    <owl:disjointWith rdf:resource="#Nonident"/>
    <owl:disjointWith rdf:resource="#None"/>
  </owl:Class>
  <owl:Class rdf:about="#Nonident">
    <rdfs:label xml:lang="en">We do not keep any information identified with you
   </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
    <owl:disjointWith rdf:resource="#None"/>
  </owl:Class>
  <owl:Class rdf:about="#None">
      <rdfs:label xml:lang="en">We do not give you access to our information about you
   </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Access"/>
  </owl:Class>


  <!-- Dispute Resolution Classes -->

  <owl:Class rdf:about="#Dispute-Resolution">
    <rdfs:label xml:lang="en">Ways to resolve privacy-related disputes with us include:
   </rdfs:label>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#short-description"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#dispute-resolution-uri"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#resource"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#dispute-verification"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#has-remedies"/>
  <owl:allValuesFrom rdf:resource="#Remedies"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#long-description"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1">
  <owl:onProperty rdf:resource="#has-image"/>
  <owl:allValuesFrom rdf:resource="#Image"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
<owl:Class rdf:about="#Independent">
    <rdfs:label xml:lang="en">display "independent organization" with
    hyperlink to service URI
 </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Dispute-Resolution"/>
  </owl:Class>
  <owl:Class rdf:about="#Court">
    <rdfs:label xml:lang="en">We believe that the following authority
    offers recourse for disputes:
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Dispute-Resolution"/>
  </owl:Class>

  <owl:Class rdf:about="#Customerservice">
     <rdfs:label xml:lang="en">display "customer service" with
     hyperlink to service URI
  </rdfs:label>
    <rdfs:subClassOf rdf:resource="#Dispute-Resolution"/>
  </owl:Class>

  <owl:Class rdf:about="#Image">
    <rdfs:label xml:lang="en">Image Associated with Dispute Resolution</rdfs:label>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#width"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#INTEGER"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#height"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#INTEGER"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction owl:minCardinality="1" owl:maxCardinality="1">
  <owl:onProperty rdf:resource="#alt"/>
  <owl:allValuesFrom rdf:resource="http://www.w3.org/2001/XMLSchema#STRING"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

 <owl:ObjectProperty rdf:about="#discuri">
    <rdfs:label xml:lang="en">Read our full privacy policy at [with link to discuri]
   </rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#opturi">
   <rdfs:label xml:lang="en">Find out how to opt-in or opt-out at [with link to opturi]
  </rdfs:label>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#has-purpose">
    <rdfs:label xml:lang="en">purpose-of</rdfs:label>

  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#is-subject">
    <rdfs:label xml:lang="en">is-subject</rdfs:label>

  </owl:DatatypeProperty>

  <owl:ObjectProperty rdf:about="#has-policy">
    <rdfs:label xml:lang="en">has-policy</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#controller">
    <rdfs:label xml:lang="en">Is the controller for this policy</rdfs:label>

  </owl:ObjectProperty>



  <owl:ObjectProperty rdf:about="#has-data">
    <rdfs:label xml:lang="en">has-data</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#allowsaccess">
    <rdfs:label xml:lang="en">allowsaccess</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#disputes-resolved-by">
    <rdfs:label xml:lang="en">disputes-resolved-by</rdfs:label>

  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#short-description">
    <rdfs:label xml:lang="en">short-description</rdfs:label>

  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:about="#dispute-resolution-uri">
    <rdfs:label xml:lang="en">dispute-resolution-uri</rdfs:label>

  </owl:ObjectProperty>


  <owl:DatatypeProperty rdf:about="#dispute-verification">
    <rdfs:label xml:lang="en">dispute-verification</rdfs:label>

  </owl:DatatypeProperty>


  <owl:DatatypeProperty rdf:about="#width">
    <rdfs:label xml:lang="en">width</rdfs:label>

  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:about="#height">
    <rdfs:label xml:lang="en">height</rdfs:label>

  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:about="#alt">
    <rdfs:label xml:lang="en">alt</rdfs:label>

  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:about="#has-remedies">
    <rdfs:label xml:lang="en">has-remedies</rdfs:label>

  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#has-consequence">
    <rdfs:label xml:lang="en">has-consequence</rdfs:label>

  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:about="#collected-data">
    <rdfs:label xml:lang="en">collected-data</rdfs:label>

  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#long-description">
    <rdfs:label xml:lang="en">long-description</rdfs:label>

  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:about="#has-image">
    <rdfs:label xml:lang="en">has-image</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#recipient">
    <rdfs:label xml:lang="en">recipient</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#retention">
    <rdfs:label xml:lang="en">retention</rdfs:label>

  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#describes">
    <rdfs:label xml:lang="en">describes</rdfs:label>

  </owl:ObjectProperty>



  <!-- ************************************************

   Data Schema

   **************************************************** -->

  <!-- Data Super Category -->

<owl:Class rdf:about="#Data">
    <rdfs:comment xml:lang="en">Describes the data to be
    transferred or inferred</rdfs:comment>
    <rdfs:label xml:lang="en">Data</rdfs:label>
    <!-- Any data value must be in some category or other-category -->
  <owl:unionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Categories" />
    <owl:Class rdf:about="#Othercategories" />
  </owl:unionOf>
  <!-- Top level categories included within Data -->
  <p3p:may-include-members-of rdf:resource="#User"/>
  <p3p:may-include-members-of rdf:resource="#Dynamic"/>
  <p3p:may-include-members-of rdf:resource="#Thirdparty"/>
  <p3p:may-include-members-of rdf:resource="#Business"/>
  </owl:Class>



  <!-- Top Level Data Types -->

  <owl:Class rdf:about="#Dynamic">
    <rdfs:label xml:lang="en">Dynamic</rdfs:label>
    <p3p:may-include-members-of rdf:resource="#Clickstream"/>
  <p3p:may-include-members-of rdf:resource="#Http"/>
  <p3p:may-include-members-of rdf:resource="#Clientevents"/>
  <p3p:may-include-members-of rdf:resource="#Cookies"/>
  <p3p:may-include-members-of rdf:resource="#Searchtext"/>
  <p3p:may-include-members-of rdf:resource="#Interactionrecord"/>
  <p3p:may-include-members-of rdf:resource="#Miscdata"/>
  </owl:Class>

  <owl:Class rdf:about="#User">
    <rdfs:label xml:lang="en">User</rdfs:label>
   <p3p:may-include-members-of rdf:resource="#Name"/>
  <p3p:may-include-members-of rdf:resource="#Bdate"/>
  <p3p:may-include-members-of rdf:resource="#Login"/>
  <p3p:may-include-members-of rdf:resource="#Cert"/>
  <p3p:may-include-members-of rdf:resource="#Gender"/>
  <p3p:may-include-members-of rdf:resource="#Jobtitle"/>
  <p3p:may-include-members-of rdf:resource="#Home-info"/>
  <p3p:may-include-members-of rdf:resource="#Business-info"/>
  <p3p:may-include-members-of rdf:resource="#Employer"/>
  <p3p:may-include-members-of rdf:resource="#Department"/>
  </owl:Class>

  <owl:Class rdf:about="#ThirdParty">
    <rdfs:label xml:lang="en">ThirdParty</rdfs:label>
       <p3p:may-include-members-of rdf:resource="#Name"/>
  <p3p:may-include-members-of rdf:resource="#Bdate"/>
  <p3p:may-include-members-of rdf:resource="#Login"/>
  <p3p:may-include-members-of rdf:resource="#Cert"/>
  <p3p:may-include-members-of rdf:resource="#Gender"/>
  <p3p:may-include-members-of rdf:resource="#Jobtitle"/>
  <p3p:may-include-members-of rdf:resource="#Home-info"/>
  <p3p:may-include-members-of rdf:resource="#Business-info"/>
  <p3p:may-include-members-of rdf:resource="#Employer"/>
  <p3p:may-include-members-of rdf:resource="#Department"/>
  </owl:Class>

  <owl:Class rdf:about="#Business">
    <rdfs:label xml:lang="en">Business</rdfs:label>
   <p3p:may-include-members-of rdf:resource="#Name"/>
  <p3p:may-include-members-of rdf:resource="#Department"/>
  <p3p:may-include-members-of rdf:resource="#Cert"/>
  <p3p:may-include-members-of rdf:resource="#Contact-info"/>
  <p3p:may-include-members-of rdf:resource="#Business-info"/>
  </owl:Class>


 <!-- *******************
  Second Level Data Class Relationships
  ********************** -->
<owl:Class rdf:about="#Clickstream">
    <rdfs:label xml:lang="en">Click-stream Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Uri"/>
    <p3p:may-include-members-of rdf:resource="#Timestamp"/>
  <p3p:may-include-members-of rdf:resource="#Clientip"/>
  <p3p:may-include-members-of rdf:resource="#Other-httpmethod"/>
  <p3p:may-include-members-of rdf:resource="#Other-bytes"/>
  <p3p:may-include-members-of rdf:resource="#Other-statuscode"/>
</owl:Class>

  <owl:Class rdf:about="#Http">
    <rdfs:label xml:lang="en">HTTP Protocol Information</rdfs:label>
    <p3p:may-include-members-of rdf:resource="#Referer"/>
  <p3p:may-include-members-of rdf:resource="#Useragent"/>
  </owl:Class>

   <owl:Class rdf:about="#Clientevents">
    <rdfs:label xml:lang="en">User's Interaction with a Resource</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  </owl:Class>

    <owl:Class rdf:about="#Cookies">
    <rdfs:label xml:lang="en">Use of HTTP Cookies</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Purchase-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Financial-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Content-data-category"/>
    <p3p:may-include-members-of rdf:resource="#State-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Political-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Health-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Preference-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Location-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Government-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Interactive-data-category"/>
  </owl:Class>

    <owl:Class rdf:about="#Searchtext">
    <rdfs:label xml:lang="en">Search Terms</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Interactive-data-category"/>
  </owl:Class>

  <owl:Class rdf:about="#Interactionrecord">
    <rdfs:label xml:lang="en">Server Stores the Transaction History</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Interactive-data-category"/>
  </owl:Class>

  <owl:Class rdf:about="#Miscdata">
    <rdfs:label xml:lang="en">Miscellaneous Non-base Data Schema information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Purchase-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Financial-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Content-data-category"/>
    <p3p:may-include-members-of rdf:resource="#State-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Political-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Health-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Preference-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Location-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Government-data-category"/>
    <p3p:may-include-members-of rdf:resource="#Interactive-data-category"/>
  </owl:Class>

<!-- Name data structure -->
    <owl:Class rdf:about="#Name">
    <rdfs:label xml:lang="en">Subject's Name</rdfs:label>
   <p3p:may-include-members-of rdf:resource="#Prefix"/>
   <p3p:may-include-members-of rdf:resource="#Given"/>
   <p3p:may-include-members-of rdf:resource="#Middle"/>
   <p3p:may-include-members-of rdf:resource="#Family"/>
   <p3p:may-include-members-of rdf:resource="#Suffix"/>
   <p3p:may-include-members-of rdf:resource="#Nickname"/>
  </owl:Class>

  <owl:Class rdf:about="#Prefix">
    <rdfs:label xml:lang="en">Name Prefix</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Given">
    <rdfs:label xml:lang="en">Given Name</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Middle">
    <rdfs:label xml:lang="en">Middle Name</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Family">
    <rdfs:label xml:lang="en">Family Name (Last Name)</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Suffix">
    <rdfs:label xml:lang="en">Name Suffix</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Nickname">
    <rdfs:label xml:lang="en">Nickname</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>

   <owl:Class rdf:about="#Bdate">
    <rdfs:label xml:lang="en">Subject's Birth Date</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Ymd-year"/>
  <p3p:may-include-members-of rdf:resource="#Ymd-month"/>
  <p3p:may-include-members-of rdf:resource="#Ymd-day"/>
  <p3p:may-include-members-of rdf:resource="#Hms-hour"/>
  <p3p:may-include-members-of rdf:resource="#Hms-minute"/>
  <p3p:may-include-members-of rdf:resource="#Hms-second"/>
  <p3p:may-include-members-of rdf:resource="#Fractionsecond"/>
  <p3p:may-include-members-of rdf:resource="#Timezone"/>
  </owl:Class>

  <!-- Login data structure -->
    <owl:Class rdf:about="#Login">
    <rdfs:label xml:lang="en">Subject's Login Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Id"/>
  <p3p:may-include-members-of rdf:resource="#Password"/>
  </owl:Class>

  <owl:Class rdf:about="#Id">
    <rdfs:label xml:lang="en">Login Id</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
</owl:Class>

<owl:Class rdf:about="#Password">
    <rdfs:label xml:lang="en">Login Password</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
</owl:Class>

<!-- Login data structure -->
   <owl:Class rdf:about="#Cert">
    <rdfs:label xml:lang="en">Subject's Identity Certificate</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Key"/>
  <p3p:may-include-members-of rdf:resource="#Format"/>
  </owl:Class>
    <owl:Class rdf:about="#Key">
    <rdfs:label xml:lang="en">Certificate key</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Format">
    <rdfs:label xml:lang="en">Certificate format</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Uniqueid-data-category"/>
</owl:Class>


    <owl:Class rdf:about="#Gender">
    <rdfs:label xml:lang="en">Subject's Gender</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
  </owl:Class>

  <owl:Class rdf:about="#Jobtitle">
    <rdfs:label xml:lang="en">Subject's Job Title</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
  </owl:Class>

    <owl:Class rdf:about="#Home-info">
    <rdfs:label xml:lang="en">Subject's Home Contact Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Postal"/>
  <p3p:may-include-members-of rdf:resource="#Telecom"/>
  <p3p:may-include-members-of rdf:resource="#Online"/>
  </owl:Class>

  <owl:Class rdf:about="#Business-info">
    <rdfs:label xml:lang="en">Subject's Business Contact Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Postal"/>
  <p3p:may-include-members-of rdf:resource="#Telecom"/>
  <p3p:may-include-members-of rdf:resource="#Online"/>
  </owl:Class>


   <owl:Class rdf:about="#Employer">
    <rdfs:label xml:lang="en">Name of User's Employer</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
  </owl:Class>
  <owl:Class rdf:about="#Department">
    <rdfs:label xml:lang="en">Department or Division of Organization
    where Subject is Employed</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
  </owl:Class>




  <owl:Class rdf:about="#Contact-info">
    <rdfs:label xml:lang="en">Contact Information for the Organization</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Postal"/>
  <p3p:may-include-members-of rdf:resource="#Telecom"/>
  <p3p:may-include-members-of rdf:resource="#Online"/>
  </owl:Class>

  <!--
URI Data Structure
  -->

  <owl:Class rdf:about="#Uri">
    <rdfs:label xml:lang="en">Uri</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Authority"/>
  <p3p:may-include-members-of rdf:resource="#Stem"/>
  <p3p:may-include-members-of rdf:resource="#Querystring"/>
  </owl:Class>

  <owl:Class rdf:about="#Authority">
    <rdfs:label xml:lang="en">Uri Authority</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Stem">
    <rdfs:label xml:lang="en">Uri Stem</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Querystring">
    <rdfs:label xml:lang="en">Uri Querystring</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
</owl:Class>

<!-- Date/Time Data Structure -->

  <owl:Class rdf:about="#Timestamp">
    <rdfs:label xml:lang="en">Timestamp</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Ymd-year"/>
  <p3p:may-include-members-of rdf:resource="#Ymd-month"/>
  <p3p:may-include-members-of rdf:resource="#Ymd-day"/>
  <p3p:may-include-members-of rdf:resource="#Hms-hour"/>
  <p3p:may-include-members-of rdf:resource="#Hms-minute"/>
  <p3p:may-include-members-of rdf:resource="#Hms-second"/>
  <p3p:may-include-members-of rdf:resource="#Fractionsecond"/>
  <p3p:may-include-members-of rdf:resource="#Timezone"/>
  </owl:Class>

<owl:Class rdf:about="#Ymd-year">
    <rdfs:label xml:lang="en">Year</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Ymd-month">
    <rdfs:label xml:lang="en">Month</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Ymd-day">
    <rdfs:label xml:lang="en">Day</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Hms-hour">
    <rdfs:label xml:lang="en">Hour</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Hms-minute">
    <rdfs:label xml:lang="en">Minute</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Hms-second">
    <rdfs:label xml:lang="en">Second</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Fractionsecond">
    <rdfs:label xml:lang="en">Data about fractions of a second</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Timezone">
    <rdfs:label xml:lang="en">Timezone</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>




 <!-- IP Address Structure -->

 <owl:Class rdf:about="#Clientip">
    <rdfs:label xml:lang="en">Client's IP Address or Hostname</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Hostname"/>
  <p3p:may-include-members-of rdf:resource="#Partialhostname"/>
  <p3p:may-include-members-of rdf:resource="#Fullip"/>
  <p3p:may-include-members-of rdf:resource="#Partialip"/>
  </owl:Class>
<owl:Class rdf:about="#Hostname">
    <rdfs:label xml:lang="en">Complete Host and Domain Name</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Partialhostname">
    <rdfs:label xml:lang="en">Partial Hostname</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
  <owl:Class rdf:about="#Fullip">
    <rdfs:label xml:lang="en">Full IP Address</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Partialhostname">
    <rdfs:label xml:lang="en">Partial IP Address</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>

  <owl:Class rdf:about="#Other.httpmethod">
    <rdfs:label xml:lang="en">HTTP Request Method</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  </owl:Class>
  <owl:Class rdf:about="#Other.bytes">
    <rdfs:label xml:lang="en">Data Bytes in Response</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
  </owl:Class>
  <owl:Class rdf:about="#Other.statuscode">
    <rdfs:label xml:lang="en">Response Status Code</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Navigation-data-category"/>
    </owl:Class>

  <owl:Class rdf:about="#Referer">
    <rdfs:label xml:lang="en">Last URI Requested by the User</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Authority"/>
  <p3p:may-include-members-of rdf:resource="#Stem"/>
  <p3p:may-include-members-of rdf:resource="#Querystring"/>
  </owl:Class>
   <owl:Class rdf:about="#Useragent">
    <rdfs:label xml:lang="en">User Agent Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Computer-data-category"/>
  </owl:Class>

  <!-- Postal data structure -->

  <owl:Class rdf:about="#Postal">
    <rdfs:label xml:lang="en">Postal Data</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Name"/>
  <p3p:may-include-members-of rdf:resource="#City"/>
  <p3p:may-include-members-of rdf:resource="#Street"/>
  <p3p:may-include-members-of rdf:resource="#Stateprov"/>
  <p3p:may-include-members-of rdf:resource="#Postalcode"/>
  <p3p:may-include-members-of rdf:resource="#Organization"/>
  <p3p:may-include-members-of rdf:resource="#Country"/>
  </owl:Class>

<owl:Class rdf:about="#City">
    <rdfs:label xml:lang="en">City</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Street">
    <rdfs:label xml:lang="en">Street Address</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Stateprov">
    <rdfs:label xml:lang="en">State or Province</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Postalcode">
    <rdfs:label xml:lang="en">Postal Code</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Organization">
    <rdfs:label xml:lang="en">Organization Name</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Country">
    <rdfs:label xml:lang="en">Country</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Demographic-data-category"/>
</owl:Class>


  <!-- Telecom Data Structure -->


  <owl:Class rdf:about="#Telecom">
    <rdfs:label xml:lang="en">Telecom Data</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Telephone"/>
  <p3p:may-include-members-of rdf:resource="#Fax"/>
  <p3p:may-include-members-of rdf:resource="#Mobile"/>
  <p3p:may-include-members-of rdf:resource="#Pager"/>
  </owl:Class>


    <owl:Class rdf:about="#Telephonenum">
    <rdfs:label xml:lang="en">Telephone number data</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#intcode"/>
  <p3p:may-include-members-of rdf:resource="#loccode"/>
  <p3p:may-include-members-of rdf:resource="#number"/>
  <p3p:may-include-members-of rdf:resource="#ext"/>
  <p3p:may-include-members-of rdf:resource="#comment"/>
  </owl:Class>

     <owl:Class rdf:about="#Voicetelephonenum">
    <rdfs:label xml:lang="en">Voice Landline Telephone number data</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Telephonenum"/>
  </owl:Class>

   <owl:Class rdf:about="#Fax">
    <rdfs:label xml:lang="en">Fax Number</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Telephonenum"/>
  </owl:Class>

     <owl:Class rdf:about="#Mobile">
    <rdfs:label xml:lang="en">Mobile Telephone Number</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Telephonenum"/>
  </owl:Class>

   <owl:Class rdf:about="#Pager">
    <rdfs:label xml:lang="en">Pager Number</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Telephonenum"/>
  </owl:Class>

  <owl:Class rdf:about="#Intcode">
    <rdfs:label xml:lang="en">International Telephone Code</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
  <owl:Class rdf:about="#Loccode">
    <rdfs:label xml:lang="en">Local Telephone Area Code</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
 <owl:Class rdf:about="#Number">
    <rdfs:label xml:lang="en">Base Telephone Number Without Location Codes</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
   <owl:Class rdf:about="#Ext">
    <rdfs:label xml:lang="en">Telephone Extension Number</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>
<owl:Class rdf:about="#Comment">
    <rdfs:label xml:lang="en">Telephone Optional Comments</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Physical-data-category"/>
</owl:Class>

  <!-- Online Data Structure -->

  <owl:Class rdf:about="#Online">
    <rdfs:label xml:lang="en">Online Contact Information</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Email"/>
  <p3p:may-include-members-of rdf:resource="#Uri"/>
  </owl:Class>

  <owl:Class rdf:about="#Email">
    <rdfs:label xml:lang="en">Email Address</rdfs:label>
  <p3p:may-include-members-of rdf:resource="#Online-data-category"/>
</owl:Class>





  <!--
  ++++++++++++++++
  Categories
  ++++++++++++++++
  -->

  <owl:Class rdf:about="#Categories">
    <rdfs:comment xml:lang="en">Categories are elements inside data
    elements that provide hints to users and user agents as to the intended
    uses of the data. Categories are vital to making P3P user agents easier
    to implement and use. Note that categories are not data elements: they
    just allow users to express more generalized preferences and rules over
    the exchange of their data. Categories SHOULD NOT be used within the
    DATA elements of an ENTITY element.</rdfs:comment>
    <rdfs:label xml:lang="en">Categories</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Data"/>
  <owl:disjointWith rdf:resource="#OtherCategories"/>
  </owl:Class>

  <owl:Class rdf:about="#OtherCategories">
    <rdfs:comment xml:lang="en">Data may belong to other categories apart
    to those explicitely described in P3P.</rdfs:comment>
    <rdfs:label xml:lang="en">Other categories different from those stated
    in P3P</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Data"/>
  </owl:Class>

  <owl:Class rdf:about="#Navigation-data-category">
    <rdfs:label xml:lang="en">navigation</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

   <owl:Class rdf:about="#Online-data-category">
    <rdfs:label xml:lang="en">online</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Physical-data-category">
    <rdfs:label xml:lang="en">physical</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Uniqueid-data-category">
    <rdfs:label xml:lang="en">uniqueid</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>
  <owl:Class rdf:about="#Purchase-data-category">
    <rdfs:label xml:lang="en">purchase</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>
  <owl:Class rdf:about="#Financial-data-category">
    <rdfs:label xml:lang="en">financial</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Computer-data-category">
    <rdfs:label xml:lang="en">computer</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Demographic-data-category">
    <rdfs:label xml:lang="en">demographic</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>
  <owl:Class rdf:about="#Content-data-category">
    <rdfs:label xml:lang="en">content</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>
  <owl:Class rdf:about="#State-data-category">
    <rdfs:label xml:lang="en">state</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Political-data-category">
    <rdfs:label xml:lang="en">political</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Health-data-category">
    <rdfs:label xml:lang="en">health</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Preference-data-category">
    <rdfs:label xml:lang="en">preference</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Location-data-category">
    <rdfs:label xml:lang="en">location</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Government-data-category">
    <rdfs:label xml:lang="en">government</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

  <owl:Class rdf:about="#Interactive-data-category">
    <rdfs:label xml:lang="en">interactive</rdfs:label>
    <rdfs:subClassOf rdf:resource="#Categories"/>
  </owl:Class>

    <owl:TransitiveProperty rdf:about="#may-include-members-of">
  </owl:TransitiveProperty>


</rdf:RDF>