The Rein Policy Framework for the Semantic Web*

Latest Version : http://dig.csail.mit.edu/2006/06/rein/

This Version : http://dig.csail.mit.edu/2006/06/rein/

Previous Version : http://dig.csail.mit.edu/2005/09/rein/

Rein (pronounced rain) is a framework for representing and reasoning over policies in the Semantic Web. Rein (Rei and N3) uses high level Rei concepts for policies and N3 logic to connect these policies to each other and the Web.

Rein is a Web-based policy management framework, which exploits the inherently decentralized and open nature of the Web by allowing policies, meta-policies, and policy languages to be combined, extended, and otherwise handled in the same scalable, modular manner as are any Web resources. Resources, their policies and meta-policies, the policy languages used, and their relationships together form Rein policy networks. Rein allows entities in these policy networks to be located on local or remote Web servers as long as they are accessible via Hypertext Transfer Protocol (HTTP). It also allows these entities to be defined in terms of one other using their Uniform Resource Identifiers (URI). Rein policy networks are described using Rein ontologies and these distributed but linked descriptions are collected off the Web by the Rein engine and are reasoned over to provide policy decisions.

Rein does NOT propose a single policy language for describing policies. It allows every user to potentially have her own policy language or re-use an existing language and if required, a meta policy. Rein provides ontologies for describing Rein policy networks and provides mechanisms for reasoning over them. The ontologies and reasoning mechanisms work with any policy language and domain knowledge defined in RDF-S, OWL, or supported rule languages.

Some of the main contributions of Rein include
  • Rein is a Web-based approach to representing and reasoning over policies for Web resources. It promotes extensibility and reusability as it allows every policy to use its own policy language and meta-policy or re-use or extend existing policy languages and meta-policies.
  • Rein is flexible with respect to how sophisticated or expressive policies can be.
  • Rein provides a unified mechanism for reasoning over Rein policy networks to make policy decisions.
  • Rein supports compartmentalized policy development by allowing a division of responsibilities between different parties with different roles and skills. Designing policy languages, writing meta-policies associated with policy languages, developing policies, and enforcing policies are all modular tasks. This allows policy developers to make frequent changes at their high level of understanding without requiring any other changes to the system.
  • All information required to make the policy decision is described within or linked to from the entities in the resource's policy network making our framework self-describing.

Overview :


  1. Download cwm from the public w3c CVS repository
  2. Install cwm
  3. The Rein reasoning engine can be run off the web


There are four pictures defined in troop42 (RDF, N3) each of which has its own policy.
  1. http://demo.policyawareweb.org/images/group.jpg (policy)
  2. http://demo.policyawareweb.org/images/camping.jpg (policy)
  3. http://demo.policyawareweb.org/images/award.jpg (policy)
  4. http://demo.policyawareweb.org/images/alice-award.jpg (policy)

Example 1 (for cwm testing)

Judy makes a request for a certain picture, group.jpg. The request includes Judy's secret key which is used for authenticating her. Judy attended the meeting at which the picture was taken, so she is permitted to view the picture. This request is valid under the policy of the resource.

  • To run the example (about 16secs)

    cwm http://dig.csail.mit.edu/2006/06/rein/example/judy-req.n3 http://dig.csail.mit.edu/2006/06/rein/engine.n3 --think --filter="http://dig.csail.mit.edu/2006/06/rein/filter.n3"

    If cwm was installed correctly, the following is the output

    #Processed by Id: cwm.py,v 1.186 2006/07/07 03:30:52 syosi Exp 
            #    using base file:/Users/lkagal1/Research/dig-repos/rein/
    #  Notation3 generation by
    #       notation3.py,v 1.190 2006/07/10 14:20:31 syosi Exp
    #   Base was: file:/Users/lkagal1/Research/dig-repos/rein/
         @prefix : <http://dig.csail.mit.edu/2005/09/rein/network#> .
        @prefix http: <http://dig.csail.mit.edu/2005/09/rein/examples/http-access#> .
          [      a :Request;
                 :access http:can-get;
                 :ans :Valid;
                 :requester  [
                     http:can-get <http://demo.policyawareweb.org/images/group.jpg> ];
                 :resource <http://demo.policyawareweb.org/images/group.jpg> ].

  • To generate the proof (about 1min24secs)
    cwm http://dig.csail.mit.edu/2006/06/rein/example/judy-req.n3 http://dig.csail.mit.edu/2006/06/rein/engine.n3 --think --filter="http://dig.csail.mit.edu/2006/06/rein/filter.n3" --base=foo --why > judy.proof

Example 2 (for demo)

An example with a policy and a simplified engine.
  • To run this example
    cwm http://dig.csail.mit.edu/2006/06/rein/src/lean-req.n3 http://dig.csail.mit.edu/2006/06/rein/src/lean-engine.n3 --think --filter="http://dig.csail.mit.edu/2006/06/rein/src/lean-filter.n3"

  • To generate proof
    cwm http://dig.csail.mit.edu/2006/06/rein/src/lean-req.n3 http://dig.csail.mit.edu/2006/06/rein/src/lean-engine.n3 --filter="http://dig.csail.mit.edu/2006/06/rein/src/lean-filter.n3" --think --base=foo --why > lean.proof

  • To check proof
    python (CWM)/check.py lean.proof



Rei - An owl-based policy language for Distributed Environments
N3 - Notation3 - Design Issues article
N3 Rules - Experience with N3 rules
Cwm - A general purpose reasoner for the Semantic Web
Policy Aware Web : a project that uses Rein
maintained by Lalana Kagal
$Revision: 1783 $
$Date: 2006-07-28 17:34:55 -0400 (Fri, 28 Jul 2006) $

*This work is sponsored by the National Science Foundation (Awards 0427275 and 0524481).