typedb-test 0.1.0

Test fixture for TypeDB, using googletest StaticFixture.
Documentation
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.

define
attribute credential,
    value string;
attribute full-name,
    value string;
attribute id @abstract;
attribute email sub id,
    value string;
attribute name sub id,
    value string;
attribute number sub id,
    value string;
attribute path sub id,
    value string;
attribute object-type,
    value string;
attribute ownership-type,
    value string;
attribute parent-company-name,
    value string;
attribute review-date,
    value datetime;
attribute root-collection,
    value boolean;
attribute size-kb,
    value integer;
attribute validity,
    value boolean;

relation access,
    relates action,
    relates object,
    plays change-request:change,
    plays permission:access;
relation change-request,
    relates change,
    relates requestee,
    relates requester;
relation company-membership,
    relates company,
    relates member;
relation membership,
    relates base-member,
    relates base-parent;
relation collection-membership sub membership,
    relates collection as base-parent,
    relates member as base-member;
relation group-membership sub membership,
    relates group as base-parent,
    relates member as base-member;
relation set-membership sub membership,
    relates member as base-member,
    relates set as base-parent;
relation ownership,
    relates base-owned,
    relates base-owner;
relation group-ownership sub ownership,
    owns ownership-type,
    relates group as base-owned,
    relates owner as base-owner;
relation object-ownership sub ownership,
    owns ownership-type,
    relates object as base-owned,
    relates owner as base-owner;
relation permission,
    owns review-date,
    owns validity,
    relates access,
    relates subject,
    plays permission-maximisation-violation:permission;
relation direct-permission sub permission;
relation inherited-permission sub permission;
relation segregation-policy,
    owns name,
    relates action @card(2..2),
    plays segregation-violation:policy;
relation violation @abstract,
    relates dummy_unused;
relation maximization-violation @abstract, sub violation;
relation group-maximisation-violation sub maximization-violation,
    relates group;
relation permission-maximisation-violation sub maximization-violation,
    relates permission;
relation segregation-violation sub violation,
    relates object,
    relates policy,
    relates subject;
entity action @abstract,
    owns name,
    owns object-type @card(0..), # Is the card constraint correct?
    owns parent-company-name,
    plays access:action,
    plays company-membership:member,
    plays segregation-policy:action,
    plays set-membership:member;
entity operation sub action;
entity operation-set sub action,
    plays set-membership:set;
entity company,
    owns name,
    plays company-membership:company;
entity object @abstract,
    owns object-type @card(0..),
    owns parent-company-name ,
    plays access:object,
    plays collection-membership:member,
    plays company-membership:member,
    plays object-ownership:object,
    plays segregation-violation:object;
entity resource @abstract, sub object;
entity file sub resource,
    owns path,
    owns size-kb;
entity interface sub resource,
    owns name;
entity record sub resource,
    owns number;
entity resource-collection @abstract, sub object,
    owns root-collection,
    plays collection-membership:collection;
entity application sub resource-collection,
    owns name;
entity database sub resource-collection,
    owns name;
entity directory sub resource-collection,
    owns path,
    owns size-kb;
entity table sub resource-collection,
    owns name;
entity subject @abstract,
    owns credential,
    owns parent-company-name,
    plays change-request:requestee,
    plays change-request:requester,
    plays company-membership:member,
    plays group-membership:member,
    plays group-ownership:owner,
    plays object-ownership:owner,
    plays permission:subject,
    plays segregation-violation:subject;
entity user  @abstract, sub subject;
entity person sub user,
    owns email,
    owns full-name;
entity user-group @abstract, sub subject,
    plays group-maximisation-violation:group,
    plays group-membership:group,
    plays group-ownership:group;
entity business-unit sub user-group,
    owns name;
entity user-account sub user-group,
    owns email;
entity user-role sub user-group,
    owns name;