==================
Google Drive example
==================

model
  schema 1.1

type user

type group
  relations
    define member: [user]

type folder
  relations
    define can_create_file: owner
    define owner: [user]
    define parent: [folder]
    define viewer: [user, user:*, group#member] or owner or viewer from parent

type doc
  relations
    define can_change_owner: owner
    define can_read: viewer or owner or viewer from parent
    define can_share: owner or owner from parent
    define can_write: owner or owner from parent
    define owner: [user]
    define parent: [folder]
    define viewer: [user, user:*, group#member]

---


(source_file
  (model
    (schema
      (version)))
  (type_declaration
    (identifier))
  (type_declaration
    (identifier)
    (relations
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier))))))
  (type_declaration
    (identifier)
    (relations
      (definition
        (identifier)
        (relation_def
          (identifier)))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier)
            (all
              (identifier))
            (relation_ref
              (identifier)
              (identifier)))
          (operator)
          (identifier)
          (operator)
          (indirect_relation
            (identifier)
            (identifier))))))
  (type_declaration
    (identifier)
    (relations
      (definition
        (identifier)
        (relation_def
          (identifier)))
      (definition
        (identifier)
        (relation_def
          (identifier)
          (operator)
          (identifier)
          (operator)
          (indirect_relation
            (identifier)
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (identifier)
          (operator)
          (indirect_relation
            (identifier)
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (identifier)
          (operator)
          (indirect_relation
            (identifier)
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier))))
      (definition
        (identifier)
        (relation_def
          (direct_relationship
            (identifier)
            (all
              (identifier))
            (relation_ref
              (identifier)
              (identifier))))))))
