OPAL, Graph, and File Access Authorization, Groups and Restrictions Definitions
type: CreativeWork
comment: This document describes the rules, groups and restrictions required for the OPAL and graph access offers.
author: this
date published: 2026-01-14T00:00:00Z

OPAL Chat Service Offers
type: OfferGroup

OPAL API Access Offers
type: OfferGroup
description: Offers for sessions instantiated via the /chat/api endpoints.

Specific Knowledge Graph Access Offers
type: OfferGroup

Specific Knowledge File Access Offers
type: OfferGroup

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DataTwinglerSpecificModuleEntryLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DataTwinglerSpecificModulePlusOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DataTwinglerSpecificModuleProOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DataTwinglerSpecificModuleMaxOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:SupportAssistantSpecificModuleEntryLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:SupportAssistantSpecificModulePlusOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:SupportAssistantSpecificModuleProOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:SupportAssistantSpecificModuleMaxOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:BringYourOwnKeyEntryLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } }

OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:BringYourOwnKeyPlusOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:BringYourOwnKeyProOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:MaxOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

Max prompts per session
type: Restriction
description: Users are limited to a maximum of 20 prompts within a single session
has restricted resource: chat
has restricted parameter: max-prompts
has max value: 20
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
describedby: source

Max tokens per prompt
type: Restriction
description: Each prompt can use up to 2000 tokens
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has max value: 2000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
describedby: source

Max total tokens per session
type: Restriction
description: The total token usage for an entire session is capped at 4000 tokens
has restricted resource: chat
has restricted parameter: max-tokens
has max value: 4000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
describedby: source

Max 25 prompts for min
type: Restriction
description: Up to 25 prompts
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has max value: 1500
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
describedby: source

Interval of 1 hour
type: Restriction
description: Interval used for all limits
has restricted resource: chat
has restricted parameter: max-prompts-interval
has max value: 3600
has realm: DefaultRealm
has agent class: Agent
describedby: source

Max prompts per session
type: Restriction
description: Users are limited to a maximum of 200 prompts within a single session
has restricted resource: chat
has restricted parameter: max-prompts
has max value: 200
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max tokens per prompt
type: Restriction
description: Each prompt can use up to 20000 tokens
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has max value: 20000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max total tokens per session
type: Restriction
description: The total token usage for an entire session is capped at 40000 tokens
has restricted resource: chat
has restricted parameter: max-tokens
has max value: 40000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max 250 prompts for interval 1 min
type: Restriction
description: Up to 250 prompts
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has max value: 15000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
describedby: source

Max prompts per session
type: Restriction
description: Users are limited to a maximum of 400 prompts within a single session
has restricted resource: chat
has restricted parameter: max-prompts
has max value: 400
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max tokens per prompt
type: Restriction
description: Each prompt can use up to 100k tokens
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has max value: 100000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max total tokens per session
type: Restriction
description: The total token usage for an entire session is capped at 200k tokens
has restricted resource: chat
has restricted parameter: max-tokens
has max value: 200000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max 500 prompts for interval 1 min
type: Restriction
description: Up to 500 prompts
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has max value: 3000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
describedby: source

Max prompts per session
type: Restriction
description: Users are limited to a maximum of 1k prompts within a single session
has restricted resource: chat
has restricted parameter: max-prompts
has max value: 1000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max tokens per prompt
type: Restriction
description: Each prompt can use up to 500k tokens
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has max value: 500000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max total tokens per session
type: Restriction
description: The total token usage for an entire session is capped at 1M tokens
has restricted resource: chat
has restricted parameter: max-tokens
has max value: 1000000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Max 1000 prompts for interval 1 min
type: Restriction
description: Up to 1000 prompts
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has max value: 60000
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Session Scoped to Data Twingler module
type: Restriction
description: OPAL Sessions that use the Data Twingler module
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has restricted value: data-twingler-config
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
describedby: source

Session Scoped to the Support Assistant
type: Restriction
description: OPAL Sessions that use the Support Assistant
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has restricted value: virtuoso-support-assistant-config
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
describedby: source

Entry Level assistant access
type: Restriction
description: Entry Level assistant access
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
has restricted value: cello-config,data-twingler-config,opml-rss-news-reader,uda-support-assistant-config,virtuoso-support-assistant-config,data-twingler-uniprot
describedby: source

Entry Level assistant access for tools
type: Restriction
description: Entry Level assistant access to the tools
has restricted resource: chat
has restricted parameter: enabled-tools
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
has restricted value: UB.DBA.sparqlQuery,Demo.demo.execute_spasql_query,Demo.demo.execute_sql_query
has max value: 1
describedby: source

Plus assistant access
type: Restriction
description: Plus assistant access
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
has restricted value: cello-config,data-twingler-config,opml-rss-news-reader,uda-support-assistant-config,virtuoso-support-assistant-config,data-twingler-uniprot
describedby: source

Plus assistant access for tools
type: Restriction
description: Plus assistant access to the tools
has restricted resource: chat
has restricted parameter: enabled-tools
has realm: DefaultRealm
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
has restricted value: UB.DBA.sparqlQuery,Demo.demo.execute_spasql_query,Demo.demo.execute_sql_query,OAI.DBA.WEB_FETCH,OAI.DBA.SPONGE_URL,FCT.DBA.FacetSearch
has max value: 2
describedby: source

Enable system-wide API key
type: Restriction
description: Allow use of system-wide API key.
has restricted resource: chat
has restricted parameter: enable-api-keys
has realm: DefaultRealm
has restricted value: 1
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
has agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
describedby: source

Rule to allow access to /chat when an offer is purchased
type: Authorization
access to: chat
has access mode: Read
has access mode: Write
agent: OPAL Users identified using a NetID based Identifier who have purchased the Data Twingler Assistant offer and whose license is in date
agent: OPAL Users identified using a NetID based Identifier who have purchased access to the Support Assistant chat offer and whose license is in date
agent: OPAL Users identified using a NetID based Identifier who have purchased the Entry level offer and whose license is in date
agent: OPAL Users identified using a NetID based Identifier who have purchased the Plus level offer and whose license is in date
agent: OPAL Users identified using a NetID based Identifier who have purchased the Pro level offer and whose license is in date
agent: OPAL Users identified using a NetID based Identifier who have purchased the Max level offer and whose license is in date
has realm: DefaultRealm
has scope: Query

Users with API Access Entry Level License
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:ApiAccessEntryLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } }

Users with API Access Medium Level License
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:ApiAccessMediumLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

Users with API Access Advanced Level License
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:ApiAccessAdvancedLevelOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

Users with API Access Max License
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:ApiAccessMaxOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

API Entry: Max prompts per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts
has realm: DefaultRealm
has max value: 20
has agent: Users with API Access Entry Level License

API Entry: Max input tokens per prompt
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has realm: DefaultRealm
has max value: 2000
has agent: Users with API Access Entry Level License

API Entry: Max total tokens per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-tokens
has realm: DefaultRealm
has max value: 4000
has agent: Users with API Access Entry Level License

API Entry: Max prompts per minute
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has realm: DefaultRealm
has max value: 1500
has agent: Users with API Access Entry Level License

API Medium: Max prompts per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts
has realm: DefaultRealm
has max value: 200
has agent: Users with API Access Medium Level License

API Medium: Max input tokens per prompt
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has realm: DefaultRealm
has max value: 20000
has agent: Users with API Access Medium Level License

API Medium: Max total tokens per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-tokens
has realm: DefaultRealm
has max value: 40000
has agent: Users with API Access Medium Level License

API Medium: Max prompts per minute
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has realm: DefaultRealm
has max value: 15000
has agent: Users with API Access Medium Level License

API Advanced: Max prompts per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts
has realm: DefaultRealm
has max value: 400
has agent: Users with API Access Advanced Level License

API Advanced: Max input tokens per prompt
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has realm: DefaultRealm
has max value: 100000
has agent: Users with API Access Advanced Level License

API Advanced: Max total tokens per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-tokens
has realm: DefaultRealm
has max value: 200000
has agent: Users with API Access Advanced Level License

API Advanced: Max prompts per minute
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has realm: DefaultRealm
has max value: 30000
has agent: Users with API Access Advanced Level License

API Max: Max prompts per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts
has realm: DefaultRealm
has max value: 1000
has agent: Users with API Access Max License

API Max: Max input tokens per prompt
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompt-tokens
has realm: DefaultRealm
has max value: 500000
has agent: Users with API Access Max License

API Max: Max total tokens per session
type: Restriction
has restricted resource: chat
has restricted parameter: max-tokens
has realm: DefaultRealm
has max value: 1000000
has agent: Users with API Access Max License

API Max: Max prompts per minute
type: Restriction
has restricted resource: chat
has restricted parameter: max-prompts-interval-count
has realm: DefaultRealm
has max value: 60000
has agent: Users with API Access Max License

API Entry: Included Features
type: Restriction
has restricted resource: chat
has restricted parameter: enabled-tools
has realm: DefaultRealm
has restricted value: UB.DBA.sparqlQuery,Demo.demo.execute_spasql_query,Demo.demo.execute_sql_query
has agent: Users with API Access Entry Level License

API Entry: Included modules
type: Restriction
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has restricted value: cello-config,data-twingler-config,opml-rss-news-reader,uda-support-assistant-config,virtuoso-support-assistant-config,data-twingler-uniprot
has agent: Users with API Access Entry Level License

API Medium: Included Features
type: Restriction
has restricted resource: chat
has restricted parameter: enabled-tools
has realm: DefaultRealm
has restricted value: UB.DBA.sparqlQuery,Demo.demo.execute_spasql_query,Demo.demo.execute_sql_query,OAI.DBA.WEB_FETCH,OAI.DBA.SPONGE_URL,FCT.DBA.FacetSearch
has agent: Users with API Access Medium Level License

API Medium: Included modules
type: Restriction
has restricted resource: chat
has restricted parameter: module
has realm: DefaultRealm
has restricted value: cello-config,data-twingler-config,opml-rss-news-reader,uda-support-assistant-config,virtuoso-support-assistant-config,data-twingler-uniprot
has agent: Users with API Access Medium Level License

API Advanced: Included Features
type: Restriction
has restricted resource: chat
has restricted parameter: enabled-tools
has realm: DefaultRealm
has restricted value: UB.DBA.sparqlQuery,Demo.demo.execute_spasql_query,Demo.demo.execute_sql_query,OAI.DBA.WEB_FETCH,OAI.DBA.SPONGE_URL,FCT.DBA.FacetSearch
has agent: Users with API Access Advanced Level License

API Max: Enable System-Wide Keys
type: Restriction
has restricted resource: chat
has restricted parameter: enable-api-keys
has realm: DefaultRealm
has restricted value: 1
has agent: Users with API Access Max License

Rule to allow access to /chat when an offer is purchased
type: Authorization
access to: chat
has access mode: Read
has access mode: Write
agent: Users with API Access Entry Level License
agent: Users with API Access Medium Level License
agent: Users with API Access Advanced Level License
agent: Users with API Access Max License
has realm: DefaultRealm
has scope: Query

Rule to allow access to oauth apps when an API offer is purchased
type: Authorization
access to: apps
has access mode: Read
has access mode: Write
agent: Users with API Access Entry Level License
agent: Users with API Access Medium Level License
agent: Users with API Access Advanced Level License
agent: Users with API Access Max License
has realm: DefaultRealm
has scope: OAuth

Users identified using a NetID based Identifier who have purchased the demo graph access offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DemoGraphAccessOffer ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

Users identified using a NetID based Identifier who have purchased the demo graph access offer and whose license is in date
type: ConditionalGroup
has condition: GroupCondition
  type: QueryCondition
  has query: prefix oplprchs: <http://www.openlinksw.com/ontology/purchases#> prefix opllic: <http://www.openlinksw.com/ontology/licenses#> prefix oplofr: <http://www.openlinksw.com/ontology/offers#> prefix schema: <http://schema.org/> prefix oplshop: <http://www.openlinksw.com/ontology/shop#> prefix owl: <http://www.w3.org/2002/07/owl#> ask where { { select ?license where { { graph <urn:openlinksw.com.shop:registry> { ?shop oplshop:hasPurchaseCache ?cg } } union { bind(<urn:openlinksw.com:shop:purchases:cache> as ?cg) } graph ?cg { { ^{uri}^ oplprchs:madePurchase ?purchase . } union { ?o owl:sameAs ^{uri}^ ; oplprchs:madePurchase ?purchase . } ?purchase oplprchs:contains ?offer ; oplprchs:purchaseDate ?purchaseDate . ?offer a oplofr:DemoGraphAccessOfferWorldCupMeshup ; schema:itemOffered ?license . ?license opllic:hasDuration ?duration . ?duration opllic:durationYears ?years . filter (bif:dateadd ('day', xsd:integer(?years) * 365, ?purchaseDate) > bif:now()) . } } limit 1 } filter (sql:stripe_customer_has_active_product_subscription (str(^{uri}^), ?license) > 0) . }

Rule to allow access to the demo graph
type: Authorization
access to: graph
has access mode: Read
has realm: DefaultRealm
has scope: PrivateGraphs
agent: Users identified using a NetID based Identifier who have purchased the demo graph access offer and whose license is in date
describedby: source

Rule to allow access to the <https://linkeddata.uriburner.com/DAV/demos/daas_paid/world-cup-2026-country-player-guide-meshup-gpt5-chat-1.ttl> graph
type: Authorization
access to: world-cup-2026-country-player-guide-meshup-gpt5-chat-1.ttl
access to: world-cup-2026-meshup-kg-1.ttl
has access mode: Read
has realm: DefaultRealm
has scope: PrivateGraphs
agent: Users identified using a NetID based Identifier who have purchased the demo graph access offer and whose license is in date
describedby: source

Rule to allow access to /sparql for user who purchase file access
type: Authorization
access to: sparql
has access mode: Read
has realm: DefaultRealm
has scope: Query
agent: this
describedby: source