Skip to main content

Permission Ontology

Administrative Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Permission Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/administrative-metadata/permission-ontology.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "PermissionOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := AdministrativeMetadata
ONTOLOGY := PermissionOntology

ENTITY Permission {
    definition:
        "An administrative authorisation that allows a defined subject to
         perform one or more specified actions on a resource within an
         explicit scope, time period, policy context and set of conditions.";
    objectives: [
        AuthorisationRepresentation,
        ActionControl,
        ScopeManagement,
        ConditionalAccess,
        DelegationControl,
        RevocationManagement,
        MachineInterpretability
    ];
}

PermissionEntity := {
    Permission,
    PermissionIdentifier,
    PermissionRecord,
    PermissionStatus,
    PermissionScope,
    PermissionGrant,
    PermissionDecision,
    PermittedAction
};

SubjectEntity := {
    Subject,
    User,
    Agent,
    Role,
    Group,
    ServiceAccount,
    Grantee,
    Grantor
};

ControlEntity := {
    Resource,
    Action,
    Condition,
    Restriction,
    Obligation,
    Policy,
    Delegation,
    Revocation
};

MetadataEntity := {
    Provenance,
    Version,
    Confidence,
    Timestamp,
    EffectivePeriod,
    Authority
};

Permission ALLOWS Subject TO_PERFORM Action ON Resource;
Grantor GRANTS Permission TO Grantee;
Permission HAS_SCOPE PermissionScope;
Permission MAY_REQUIRE Condition;
Permission MAY_HAVE Restriction;
Permission MAY_HAVE EffectivePeriod;
Revocation TERMINATES Permission;
PermissionRecord DOCUMENTS Permission;

PermissionFlow :=
    PermissionRequestOrGrant
    -> IdentifySubject
    -> IdentifyResource
    -> IdentifyAction
    -> ResolveGrantorAuthority
    -> DefinePermissionScope
    -> DefineConditionsRestrictionsAndObligations
    -> DefineEffectivePeriod
    -> AttachProvenanceAndEvidence
    -> ValidatePermission
    -> ActivateOrRejectPermission
    -> EnforceAndAudit
    -> MaintainAcrossLifecycle;

Permission :=
    ExplicitOrDerivedAuthorisationForSpecifiedAction;

PermissionIdentifier :=
    StableReferenceToPermissionOrPermissionRecord;

PermissionIdentifier MAY_BE {
    URI,
    IRI,
    UUID,
    PolicyIdentifier,
    InternalIdentifier
};

PermissionRecord :=
    StructuredAdministrativeRecordDescribingPermission;

PermissionStatus MAY_BE {
    Proposed,
    Active,
    Suspended,
    Expired,
    Revoked,
    Superseded,
    Denied,
    Unknown
};

ActivePermission :=
    PermissionCurrentlyEffectiveAccordingToScopeConditionsAndTime;

ProposedPermission :=
    PermissionAwaitingApprovalOrActivation;

ExpiredPermission :=
    PermissionWhoseEffectivePeriodHasEnded;

RevokedPermission :=
    PermissionExplicitlyWithdrawnByAuthorisedProcess;

SuspendedPermission :=
    PermissionTemporarilyDisabledWithoutPermanentRevocation;

SupersededPermission :=
    PermissionReplacedByNewerPermissionOrPolicy;

Subject :=
    AgentReceivingOrUsingPermission;

Subject MAY_BE {
    Person,
    User,
    Organisation,
    Role,
    Group,
    ServiceAccount,
    SoftwareAgent,
    AIService
};

Grantee :=
    SubjectToWhomPermissionIsGranted;

Grantor :=
    AgentOrAuthorityGrantingPermission;

Grantor MUST_HAVE AuthorityToGrantPermissionAccordingToApplicablePolicy;

Authority :=
    ScopeOfPowerEnablingGrantorToCreateOrDelegatePermission;

Resource :=
    ObjectCapabilityOrInformationAssetToWhichPermissionApplies;

Resource MAY_BE {
    Document,
    Dataset,
    File,
    MetadataRecord,
    API,
    Service,
    System,
    Model,
    ResourceFragment
};

Action :=
    OperationAuthorisedByPermission;

PermittedAction MAY_BE {
    Read,
    View,
    Search,
    Download,
    Create,
    Update,
    Delete,
    Execute,
    Share,
    Publish,
    Administer,
    Reproduce,
    Distribute,
    Modify
};

PermissionScope :=
    BoundaryWithinWhichPermissionApplies;

PermissionScope MAY_INCLUDE {
    SubjectScope,
    ResourceScope,
    ActionScope,
    PurposeScope,
    TerritoryScope,
    TimeScope,
    ContextScope
};

SubjectScope :=
    IndividualRoleGroupOrClassOfSubjectsCovered;

ResourceScope :=
    SingleResourceCollectionTypeHierarchyOrNamespaceCovered;

ActionScope :=
    SetOfActionsPermissionAllows;

PurposeScope :=
    PermittedPurposeOrUseCase;

TerritoryScope :=
    GeographicOrLegalAreaWherePermissionApplies;

ContextScope :=
    EnvironmentalOrOperationalContextRequiredForPermission;

Condition :=
    RequirementThatMustBeSatisfiedBeforeOrDuringPermissionUse;

Condition MAY_INCLUDE {
    AuthenticationRequired,
    MultiFactorAuthentication,
    TimeWindow,
    NetworkLocation,
    DeviceTrust,
    Approval,
    Purpose,
    SecurityClearance
};

Restriction :=
    ConstraintNarrowingPermission;

Restriction MAY_INCLUDE {
    NoExternalSharing,
    ReadOnly,
    LimitedDownload,
    NoCommercialUse,
    NoModification,
    GeographicRestriction
};

Obligation :=
    RequiredActionAssociatedWithUseOfPermission;

Obligation MAY_INCLUDE {
    Attribution,
    Logging,
    Reporting,
    DataDeletion,
    NoticeRetention
};

PermissionGrant :=
    AdministrativeEventCreatingOrActivatingPermission;

PermissionGrant SHOULD_RECORD {
    Grantor,
    Grantee,
    Resource,
    Action,
    Scope,
    Timestamp,
    Authority
};

EffectivePeriod :=
    TimeIntervalDuringWhichPermissionMayApply;

EffectivePeriod MAY_HAVE {
    EffectiveFrom,
    EffectiveTo
};

TemporaryPermission :=
    PermissionWithFiniteEffectivePeriod;

PermanentPermission :=
    PermissionWithoutDefinedExpirySubjectToRevocationAndPolicy;

IF CurrentTime < EffectiveFrom
THEN PermissionStatus MAY_BE NotYetEffective;

IF CurrentTime > EffectiveTo
THEN PermissionStatus MAY_BE Expired;

PermissionExpiry :=
    EndOfPermissionEffectivePeriod;

Revocation :=
    AuthorisedWithdrawalOfPermission;

Revocation MAY_HAVE {
    RevokedBy,
    EffectiveAt,
    Reason
};

IF PermissionRevoked
THEN Permission MUST_NOT AuthoriseNewActionsAfterRevocationEffectiveTime;

Suspension :=
    TemporaryDisablingOfPermission;

Reactivation :=
    RestorationOfSuspendedPermissionAccordingToPolicy;

Delegation :=
    GrantOfDerivedPermissionBySubjectHoldingDelegableAuthority;

Delegator :=
    SubjectGrantingDelegatedPermission;

Delegate :=
    SubjectReceivingDelegatedPermission;

DelegatedPermission MUST_NOT ExceedDelegatorAuthority;

DelegationScope SHOULD_BE SubsetOfOrEqualTo DelegatorPermissionScope;

IF DelegatedPermissionExceedsParentPermission
THEN ValidationStatus := violation;

ParentPermission :=
    PermissionFromWhichDelegatedPermissionDerives;

ChildPermission :=
    PermissionCreatedThroughDelegation;

RevocationOfParentPermission MAY_REQUIRE RevocationOrReevaluationOfChildPermissions;

PermissionInheritance :=
    DerivationOfPermissionThroughRoleGroupHierarchyOrResourceHierarchy;

Inheritance MUST_BE DefinedByPolicy;

RolePermission :=
    PermissionAssignedToRoleRatherThanDirectlyToIndividualSubject;

GroupPermission :=
    PermissionAssignedToGroup;

DirectPermission :=
    PermissionAssignedDirectlyToSubject;

EffectivePermission :=
    PermissionAvailableToSubjectAfterResolvingDirectRoleGroupInheritedAndDelegatedSources;

PermissionResolution :=
    Subject
    -> GatherCandidatePermissions
    -> ApplyScopeAndConditions
    -> RemoveExpiredRevokedOrInvalidPermissions
    -> ProduceEffectivePermissions;

PermissionConflict :=
    IncompatiblePermissionAndDenialOrOverlappingRules;

Permission MAY_COEXIST_WITH ExplicitDenial;

AccessPolicy SHOULD_DEFINE ConflictResolution;

DenyOverrides MAY_RESULT_IN DenialEvenWhenPermissionExists;

PermissionDecision :=
    RequestedAction
    + EffectivePermissions
    + Denials
    + Conditions
    + Policy
    -> PermitDenyOrReview;

PermissionDecision MAY_BE {
    Permit,
    Deny,
    Conditional,
    ReviewRequired,
    Indeterminate
};

IF ActivePermissionMatchesSubjectResourceAndAction
AND RequiredConditionsSatisfied
AND NoHigherPriorityDenialApplies
THEN Decision MAY_BE Permit;

IF PermissionDoesNotCoverRequestedAction
THEN Permission MUST_NOT AuthoriseAction;

LeastPrivilege :=
    PrincipleThatPermissionsShouldBeLimitedToMinimumNecessaryScope;

PermissionReview :=
    ProcessAssessingWhetherExistingPermissionRemainsNecessaryAndAppropriate;

ReviewTrigger MAY_INCLUDE {
    ScheduledReview,
    RoleChange,
    EmploymentChange,
    ResourceChange,
    SecurityIncident,
    PolicyChange
};

PermissionRecertification :=
    FormalReapprovalOfExistingPermission;

DormantPermission :=
    PermissionNotUsedForDefinedPeriod;

DormantPermission MAY_BE CandidateForReviewOrRevocationAccordingToPolicy;

ExcessivePermission :=
    PermissionBroaderThanRequiredForSubjectResponsibilities;

ExcessivePermission MAY_INCREASE SecurityRisk;

PermissionValidation MAY_CHECK {
    SubjectIdentity,
    ResourceIdentity,
    ActionValidity,
    GrantorAuthority,
    Scope,
    EffectivePeriod,
    Delegation,
    Conditions
};

IF GrantorLacksAuthority
THEN PermissionStatus SHOULD_NOT BecomeActive;

IF EffectiveEndBeforeEffectiveStart
THEN TemporalValidation := violation;

IF ResourceScopeCannotBeResolved
THEN PermissionConfidence SHOULD_DECREASE
AND Enforcement MAY_FailClosedAccordingToPolicy;

PermissionCompleteness :=
    DegreeToWhichRequiredSubjectResourceActionScopeAndAuthorityAreRecorded;

PermissionConsistency :=
    DegreeToWhichPermissionTermsDoNotConflictWithPolicyOrParentAuthority;

PermissionIntegrity :=
    PreservationOfAuthorisedPermissionStateAndHistory;

PermissionQuality MAY_INCLUDE {
    Completeness,
    Consistency,
    Integrity,
    LeastPrivilegeAlignment,
    Auditability
};

PermissionProvenance MAY_INCLUDE {
    Source,
    Grantor,
    Approval,
    Policy,
    Timestamp,
    Version
};

PermissionConfidence :=
    EstimatedSupportForInferredOrImportedPermissionMetadata;

AuthoritativePermission SHOULD_PREFER DeterministicPolicyAndApprovedRecordsOverProbabilisticInference;

PermissionVersion :=
    IdentifiedRevisionOfPermissionRecord;

PermissionHistory :=
    OrderedRecordOfGrantModificationSuspensionRevocationAndExpiry;

PermissionChange MAY_INCLUDE {
    ScopeChange,
    ActionChange,
    SubjectChange,
    ConditionChange,
    ExpiryChange,
    Revocation
};

BreakingPermissionChange :=
    ChangeThatExpandsOrReducesEffectiveAuthority;

BreakingPermissionChange SHOULD_BE AuthorisedAndAudited;

AuditRecord :=
    RecordOfPermissionGrantUseChangeOrRevocation;

PermissionAudit MAY_INCLUDE {
    Subject,
    Resource,
    Action,
    Decision,
    GrantSource,
    Timestamp
};

AdministrativeMetadata MAY_STORE PermissionRecords;

AccessControlOntology MAY_USE PermissionAsCoreAuthorisationEntity;

LicensingOntology MAY_DEFINE PermissionsDerivedFromLicenceTerms;

CopyrightOntology MAY_DEFINE RightsWhoseUseRequiresPermission;

SecurityClassification MAY_CONSTRAIN PermissionsThroughClearanceRules;

ProvenanceMetadata MAY_RECORD PermissionGrantAndChangeHistory;

MetadataRepository MAY_ENFORCE PermissionAt {
    Resource,
    Record,
    Field,
    Fragment
};

MetadataRegistry MAY_REGISTER PermissionTypesActionsConditionsAndStatuses;

KnowledgeGraph MAY_REPRESENT:
    Subject
    -> HAS_PERMISSION
    -> Permission;

Permission
    -> ALLOWS_ACTION
    -> Action;

Permission
    -> APPLIES_TO
    -> Resource;

PermissionGraph SHOULD_PRESERVE ScopeConditionsAuthorityAndVersion;

RDF MAY_REPRESENT PermissionRelationshipsAsTypedStatements;

JSONLD MAY_SERIALISE LinkedPermissionMetadata;

Search MUST_APPLY EffectivePermissionsBeforeReturningProtectedResults;

SemanticSearch MUST_FILTER ResourceEligibilityUsingCurrentPermissionState;

RAG MUST_VERIFY EffectivePermissionBeforeAddingProtectedResourceToModelContext;

PermissionAwareRAG SHOULD_PRESERVE {
    SubjectIdentity,
    ResourceIdentifier,
    PermissionDecision,
    PolicyVersion,
    Provenance
};

CachedPermissionDecision MAY_BECOME InvalidAfterRevocationOrPolicyChange;

Revocation SHOULD_TRIGGER CacheInvalidationWhereRelevant;

AI MAY_SUPPORT {
    PermissionReview,
    RoleRecommendation,
    ExcessivePermissionDetection,
    PolicyExtraction,
    AnomalyDetection
};

AIGeneratedPermissionRecommendation SHOULD_NOT BecomeActivePermissionWithoutRequiredAuthorisation;

PermissionMetadata MAY_CONTAIN SensitiveSecurityInformation;

AccessToPermissionMetadata SHOULD_BE ControlledAccordingToPolicy;

PermissionSecurity MAY_INCLUDE {
    IdentityValidation,
    GrantorAuthorityValidation,
    AccessControl,
    AuditIntegrity,
    ChangeAuthorisation
};

MachineReadablePermission SHOULD_PRESERVE {
    PermissionIdentifier,
    SubjectIdentifier,
    ResourceIdentifier,
    Actions,
    Scope,
    Conditions,
    Restrictions,
    EffectivePeriod,
    Status,
    Grantor,
    Authority,
    Provenance,
    Version
};

# ---------- SEMANTIC REASONING ----------
IF AdministrativeAuthorisationAllowsSubjectToPerformActionOnResource
THEN PermissionClassification := supported;

IF PermissionStatus != Active
THEN Permission SHOULD_NOT AuthoriseCurrentActionUnlessPolicyDefinesOtherwise;

IF CurrentTimeOutsideEffectivePeriod
THEN Permission SHOULD_NOT AuthoriseAction;

IF GrantorLacksRequiredAuthority
THEN Permission MUST_NOT BecomeAuthoritative;

IF DelegatedPermissionExceedsParentScope
THEN DelegatedPermissionValidation := violation;

IF ParentPermissionRevoked
THEN ChildPermissions SHOULD_BE RevalidatedOrRevokedAccordingToPolicy;

IF SubjectRoleRemoved
THEN RoleDerivedPermissions SHOULD_NO_LONGER Apply;

IF PermissionRevoked
THEN CachedDecisionsBasedOnPermission SHOULD_BE Invalidated;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
    "permission" ~= "access permission" WHEN authorisation_context;
    "permission grant" ~= "authorisation grant";
    "grantee" ~= "permission recipient";
    "grantor" ~= "permission issuer";
    "permission scope" ~= "authorisation scope";
    "temporary permission" ~= "time-limited permission";
    "delegated permission" ~= "delegated authority" WHEN action_scope_context;
    "permission revocation" ~= "withdrawal of permission";
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
    NORMALISE(q) ->
    IDENTIFY_SUBJECT(q) ->
    IDENTIFY_RESOURCE(q) ->
    IDENTIFY_REQUESTED_ACTION(q) ->
    RESOLVE_DIRECT_ROLE_GROUP_AND_DELEGATED_PERMISSIONS(q) ->
    FILTER_BY_STATUS_AND_EFFECTIVE_PERIOD(q) ->
    EVALUATE_SCOPE_CONDITIONS_AND_RESTRICTIONS(q) ->
    VERIFY_GRANTOR_AUTHORITY(q) ->
    RESOLVE_CONFLICTS_WITH_DENIALS_AND_POLICY(q) ->
    PRODUCE_PERMISSION_DECISION(q) ->
    RECORD_PROVENANCE_AND_AUDIT(q) ->
    RETURN_AUTHORISED_RESULT_OR_DENIAL;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
    weighted_mean(
        authority_strength,
        subject_identity_strength,
        resource_scope_resolution,
        permission_consistency,
        provenance_quality,
        contextual_relevance
    );

CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
    primary_entity: Permission;
    ontology: PermissionOntology;
    parse_entities: true;
    parse_relationships: true;
    preserve_relationship_direction: true;
    resolve_semantic_equivalence: true;
    execute_reasoning_rules: true;
    apply_confidence_weighting: true;
    preserve_provenance: true;
    enforce_permission_state: true;
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
    new_permission:
        identify_subject
        -> identify_resource
        -> define_actions
        -> verify_grantor_authority
        -> define_scope
        -> define_conditions_and_restrictions
        -> define_effective_period
        -> attach_provenance
        -> validate
        -> activate_if_authorised
        -> integrate;

    permission_revision:
        preserve_previous_version
        -> apply_authorised_changes
        -> detect_scope_expansion_or_reduction
        -> revalidate_authority_and_conditions
        -> audit_change
        -> invalidate_affected_caches
        -> regenerate_flow_hash;

    delegation:
        identify_parent_permission
        -> verify_delegation_allowed
        -> constrain_child_scope
        -> assign_delegate
        -> validate
        -> integrate;

    revocation:
        identify_permission
        -> verify_revocation_authority
        -> set_revoked_status
        -> identify_child_permissions
        -> invalidate_cached_decisions
        -> audit
        -> integrate;

    conflict:
        preserve_permission_and_denial_sources
        -> apply_policy_precedence
        -> preserve_decision_reason
        -> flag_review_if_indeterminate;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
    DOMAIN
    + SUBDOMAIN
    + ONTOLOGY
    + PermissionEntity
    + SubjectEntity
    + ControlEntity
    + MetadataEntity
    + Permission
    + PermissionResolution
    + PermissionDecision
    + RELATIONSHIPS
    + SEMANTIC_REASONING
    + SEMANTIC_EQUIVALENCE
    + UPDATE_MODEL;

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
PermissionOntology
    -> IdentifySubjectResourceAndRequestedAction
    -> AssignStablePermissionIdentifier
    -> VerifyGrantorAuthority
    -> DefineActionsScopeConditionsRestrictionsAndObligations
    -> DefineEffectivePeriodAndPermissionStatus
    -> ResolveDirectRoleGroupInheritedAndDelegatedPermissions
    -> ValidateLeastPrivilegeDelegationAndPolicyConsistency
    -> ProduceEffectivePermissionDecision
    -> RecordGrantUseChangeRevocationAndAuditHistory
    -> InvalidateAuthorityWhenPermissionsExpireOrAreRevoked
    -> ApplyPermissionChecksToSearchRAGAndResourceAccess
    -> PreserveProvenanceVersionAndDecisionContext
    -> MaintainReliablePermissionKnowledge;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ