Skip to content

Instantly share code, notes, and snippets.

View flyingsilverfin's full-sized avatar

Joshua Send flyingsilverfin

View GitHub Profile
@flyingsilverfin
flyingsilverfin / permissions_rules.tql
Created October 11, 2021 16:59
Inference in TypeDB - Permissions Rules
define
rule owners-have-write-access:
when { (resource: $r, owner: $owner) isa resource-ownership; }
then { (writer: $owner, writable: $r) isa write-access; };
rule members-borrow-write-access:
when {
(member: $u, team: $t) isa team-membership;
(writer: $t, writable: $r) isa write-access;
@flyingsilverfin
flyingsilverfin / permissions_schema.tql
Last active July 18, 2022 21:16
Inference in TypeDB - Permissions Schema
define
user sub entity,
plays team-membership:member,
plays read-access:reader,
plays write-access:writer,
plays resource-ownership:owner;
team sub entity,
plays team-membership:team,
plays read-access:reader,
plays write-access:writer,
@flyingsilverfin
flyingsilverfin / permissions_data.tql
Last active October 19, 2022 15:15
Inference in TypeDB - Permissions Data
insert
$x isa user;
$t isa team;
(member: $x, team: $t) isa team-membership;
$r isa resource;
(owner: $t, resource: $r) isa resource-ownership;
@flyingsilverfin
flyingsilverfin / rule_skeleton.tql
Created November 28, 2022 15:28
Define rule skeleton
define
rule <label>:
when {
<condition>
} then {
<conclusion>
}
@flyingsilverfin
flyingsilverfin / contradicting_rule.tql
Created November 28, 2022 15:39
A rule that negates its own premise
rule give-permission:
when {
$x isa user;
not { $x has permission $a; };
} then {
$x has permission "read";
};
@flyingsilverfin
flyingsilverfin / rules_in_typedb_relations_on_relations.tql
Created November 28, 2022 15:42
Rules in TypeDB blog: relation on relation
insert
$u isa user;
$t isa team;
$r isa resource;
$r (owner: $t, owned: $r) isa resource-ownership;
(source: $r, accessor: $u, accessible: $r) isa derived-access;
@flyingsilverfin
flyingsilverfin / rules_in_typedb_infinite_relations_rule.tql
Created November 28, 2022 15:43
Rules in TypeDB blog: create infinite relations with a rule
rule infinite-list:
when {
$r isa list-node;
} then {
(previous: $r) isa list-node;
}
@flyingsilverfin
flyingsilverfin / rules_in_typedb_members_borrow_read_access_rule.tql
Created November 28, 2022 15:54
Rules in TypeDB blog: members borrow read access rule
rule members-borrow-read-access:
when {
(member: $u, team: $t) isa team-membership;
(reader: $t, readable: $r) isa read-access;
} then {
(reader: $u, readable: $r) isa read-access;
};
@flyingsilverfin
flyingsilverfin / rules_in_typedb_members_borrow_write_access_rule.tql
Created November 28, 2022 15:54
Rules in TypeDB blog: members borrow write access rule
rule members-borrow-write-access:
when {
(member: $u, team: $t) isa team-membership;
(writer: $t, writable: $r) isa write-access;
} then {
(writer: $u, writable: $r) isa write-access;
};
@flyingsilverfin
flyingsilverfin / rules_in_typedb_owners_have_write_access_rule.tql
Created November 28, 2022 15:55
Rules in TypeDB blog: owners have write access rule
rule owners-have-write-access:
when {
(resource: $r, owner: $owner) isa resource-ownership;
} then {
(writer: $owner, writable: $r) isa write-access;
};