|
|
rbac:Role a owl:Class.
rbac:ActiveRole a owl:Class.
activeForm a owl:FunctionalProperty, owl:InverseFunctionalProperty;
rdfs:domain Role;
rdfs:range ActiveRole.
USPerson rdfs:subClassOf rbac:Role.
ActiveUSPerson rdfs:subClassOf rbac:ActiveRole,
rdfs:subClassOf USPerson.
USPerson rbac:activeForm ActiveUSPerson.
Alice a Citizen, ActiveCitizen.
Bob a Visitor, Resident.
Citizen rdfs:subclassOf USPerson.
Resident rdfs:subclassOf USPerson.
PermanentResident rdfs:subclassOf Resident.
Citizen owl:disjointWith Resident
ActiveVisitor owl:disjointWith ActiveResident
PermittedVoteAction a rdfs:Class;
rdfs:subClassOf rbac:PermittedAction;
owl:equivalentClass [
a owl:Class;
owl:intersectionOf
( Vote
[ a owl:Restriction;
owl:allValuesFrom ex:ActiveCitizen;
owl:onProperty rbac:subject
]
)
] .
{ ?ACTION a ActivateRole;
subject ?SUBJ;
object ?RNEW.
?RNEW activeForm ?ARNEW.
?S a ?RCURRENT.
?RCURRENT activeForm ?ARCURRENT.
?ARNEW owl:disjointWith ?ARCURRENT.
} => {?ACTION a ProhibitedRoleActivation;
subject ?SUBJ; object ?RNEW; role ?RCURRENT;
justification "Violates DSOD constraint".}.
rbac:Role a owl:Class.
rbac:role a owl:ObjectProperty;
rdfs:domain rbac:Subject;
rdfs:range rbac:Role.
rbac:activeRole rdfs:subPropertyOf rbac:role.
USPerson a rbac:Role.
Alice rbac:role Citizen; rbac:activeRole Citizen.
Bob rbac:role Visitor, Resident.
rbac:subRole a owl:TransitiveProperty;
rdfs:domain rbac:Role;
rdfs:range rbac:Role.
Citizen rbac:subRole USPerson.
Resident rbac:subRole USPerson.
PermanentResident rbac:subRole Resident.
TemporaryResident rbac:subRole Resident
rbac:ssod a owl:SymmetricProperty, owl:TransitiveProperty;
rdfs:domain rbac:Role;
rdfs:range rbac:Role.
Resident rbac:ssod Citizen.
Visitor rbac:dsod Resident
rbac:permitted a rdfs:Property;
rdfs:domain Role;
rdfs:range Action.
Example: Citizen rbac:permitted Vote, Work, JuryDuty.
{ ?A a ?RACTION; subject ?S.
?RACTION a Action.
?ROLE permitted ?RACTION.
?S activeRole ?ROLE.
} => { ?A a PermittedAction;
role ?ROLE;
action ?RACTION;
subject ?S }.
{ ?A a rbac:Action;
rbac:subject ?S;
rbac:object ?O.
?S a UniversityPerson; office ?L,
?O a Device; location ?L.
} => { ?A a rbac:PermittedAction }.
1 alice.friend <- bob ;Bob is a friend of Alice
2 alice.friend <- bob.friend ;Alice's friends include Bob's friends
3 alice.friend <- carol.enemy.enemy ;..and Carol's enemies' enemies
4 alice.friend <- umbc.student & iit.alumnus ;..and UMBC students who are IIT alumni
HQ.marketing <- HR.managers HQ.marketing <- HQ.stales HQ.marketing <- HR.sales HQ.marketing <- HQ.marketingDelg ^ HR.employee HQ.ops <- HR.managers HQ.ops <- HR.manufacturing HQ.marketingDelg <- HR.managers.access HR.employee <- HR.managers HR.employee <- HR.sales HR.employee <- HR.manufacturing HR.employee <- HR.researchDev HQ.staff <- HR.managers HQ.staff <- HQ.specialPanel ^ HR.researchDev HR.manager <- Alice HR.researchDev <- Bob Growth and shrink restricted roles: HQ.marketing, HQ.ops, HR.employee, HQ.marketingDelg, HQ.staff
