Skip to content
This repository was archived by the owner on Feb 25, 2026. It is now read-only.
This repository was archived by the owner on Feb 25, 2026. It is now read-only.

puzzle: Surfaces and Access Control Rules #9

@bblfish

Description

@bblfish

The Solid Web Access Control ontology - described in Solid WAC allows one to describe essentially rules stating which sets of people can access which sets of resources.

@prefix : <https://www.w3.org/ns/auth/acl#> .

<#pub> a :Authorization;
   acl:mode :Read;
   acl:accessToClass [ regex:uriSet "https://bblfish.net/public/**" ];
   acl:agentClass foaf:Person .

<#family> a acl:Authorization;
   acl:mode :Read;
   acl:accessToClass [ regex:uriSet "https://bblfish.net/family/**" ];
   acl:agentClass </family#My> .

I invented the regex:uriSet relation. I am trying to express that it specifies all resources whose uris match the pattern. This could be expressed in OWL too, but I want to keep things simple and not bring OWL in at this point.

There are a few striking things about these two rules, which made me wonder.

  1. Each rule is making universally quantified statements. <#pub> is saying that all </public/**> resources can by read by anyone. <#family> is stating that that all </family/**> resources can be read by all family members.
  2. A request only needs to satisfy one of those two rules, so we have a disjunction of rules it seems
  3. If none of the rules is satisfied by a request, then it fails.

Put this way it looks like we are dealing with the dual of what Evan Patterson calls in Knowledge Representation in Bicategories of Relations regular logic. Negation, disjunction and universal quantification seem to be present here...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions