Skip to content

ODRL Vocabulary

The UIM Protocol uses the Open Digital Rights Language (ODRL) Information Model 2.2 to define policies for AI agent-web service interactions. This page provides a reference for the ODRL vocabulary used in the UIM Protocol.

Introduction to ODRL

The Open Digital Rights Language (ODRL) is a policy expression language that provides a flexible and interoperable information model, vocabulary, and encoding mechanisms for representing statements about the usage of content and services. The ODRL Information Model 2.2 is a W3C Recommendation and is used by the UIM Protocol to define policies for AI agent-web service interactions.

ODRL Core Concepts

Policy

A Policy is a set of rules that defines the permissions, prohibitions, and obligations for a particular asset or service. In the UIM Protocol, policies are used to define the terms under which AI agents can interact with web services.

{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "@type": "Set",
  "uid": "http://example.com/policy/12345",
  "profile": "http://example.com/profile/odrl-uim",
  "permission": [...],
  "prohibition": [...],
  "obligation": [...]
}

Permission

A Permission is a rule that allows a particular action to be performed on an asset or service. In the UIM Protocol, permissions define what intents an AI agent can execute.

{
  "target": "http://example.com/api/intents",
  "action": "execute",
  "constraint": [
    {
      "leftOperand": "http://example.com/vocab/rateLimit",
      "operator": "lte",
      "rightOperand": 1000,
      "unit": "http://example.com/vocab/hour"
    }
  ],
  "duty": [
    {
      "action": "pay",
      "target": "http://example.com/vocab/intentPrice",
      "amount": 0.01,
      "unit": "http://example.com/vocab/USD"
    }
  ]
}

Prohibition

A Prohibition is a rule that forbids a particular action from being performed on an asset or service. In the UIM Protocol, prohibitions define what intents an AI agent cannot execute.

{
  "target": "http://example.com/api/intents",
  "action": "exceedRateLimit"
}

Obligation

An Obligation is a rule that requires a particular action to be performed on an asset or service. In the UIM Protocol, obligations define what an AI agent must do when executing intents.

{
  "action": "signPayload",
  "assignee": "http://example.com/ai-agent/1",
  "target": "http://example.com/vocab/payload",
  "constraint": [
    {
      "leftOperand": "http://example.com/vocab/publicKey",
      "operator": "use",
      "rightOperand": "MIIBIjANBgkqh..."
    }
  ]
}

Constraint

A Constraint is a condition that must be satisfied for a rule to be valid. In the UIM Protocol, constraints define limitations on intent execution, such as rate limits or time restrictions.

{
  "leftOperand": "http://example.com/vocab/rateLimit",
  "operator": "lte",
  "rightOperand": 1000,
  "unit": "http://example.com/vocab/hour"
}

Duty

A Duty is an obligation that must be fulfilled in order to exercise a permission. In the UIM Protocol, duties define what an AI agent must do to execute an intent, such as paying a fee.

{
  "action": "pay",
  "target": "http://example.com/vocab/intentPrice",
  "amount": 0.01,
  "unit": "http://example.com/vocab/USD"
}

UIM Protocol ODRL Extensions

The UIM Protocol extends the ODRL vocabulary with additional terms specific to AI agent-web service interactions.

Actions

Action Description
execute Execute an intent
exceedRateLimit Exceed the rate limit
pay Pay for intent execution
signPayload Sign a payload with a private key
logUsage Log usage information
provideAttribution Provide attribution to the service

Operators

Operator Description
eq Equal to
neq Not equal to
gt Greater than
gte Greater than or equal to
lt Less than
lte Less than or equal to
use Use a specific value

Left Operands

Left Operand Description
rateLimit Rate limit for intent execution
timeWindow Time window for intent execution
publicKey Public key for signature verification
intentPrice Price for intent execution
dataRetention Data retention period
dataUsage Data usage restrictions

Units

Unit Description
second Second
minute Minute
hour Hour
day Day
week Week
month Month
year Year
USD US Dollar
EUR Euro
GBP British Pound
JPY Japanese Yen

Example UIM Protocol Policy

Here's an example of a UIM Protocol policy using the ODRL vocabulary:

{
  "@context": "http://www.w3.org/ns/odrl.jsonld",
  "uid": "http://example.com/policy/12345",
  "type": "Set",
  "profile": "http://example.com/profile/odrl-uim",
  "permission": [
    {
      "target": "http://example.com/api/intents",
      "action": "execute",
      "constraint": [
        {
          "leftOperand": "http://example.com/vocab/rateLimit",
          "operator": "lte",
          "rightOperand": 1000,
          "unit": "http://example.com/vocab/hour"
        }
      ],
      "duty": [
        {
          "action": "pay",
          "target": "http://example.com/vocab/intentPrice",
          "amount": 0.01,
          "unit": "http://example.com/vocab/USD"
        }
      ]
    }
  ],
  "prohibition": [
    {
      "target": "http://example.com/api/intents",
      "action": "exceedRateLimit"
    }
  ],
  "obligation": [
    {
      "action": "signPayload",
      "assignee": "http://example.com/ai-agent/1",
      "target": "http://example.com/vocab/payload",
      "constraint": [
        {
          "leftOperand": "http://example.com/vocab/publicKey",
          "operator": "use",
          "rightOperand": "MIIBIjANBgkqh..."
        }
      ]
    }
  ]
}

References