---
# System prepended metadata

title: Interop Flowchart

---

# Interop Flowchart

* of specific shape (eg. Project)
  * all owned by specific agent (eg. ACME)
  * all in specific registration, owned by specific agent (eg. ACME)
  * specific instances, owned by specific agent (eg. ACME)


```mermaid
graph TB
  ApplicationRegistration(Application Registration)
  AccessReceipt(Access Receipt)
  DataGrant(Data Grant)
  ReferencedDataGrant(Referenced Data Grant)
  RemoteDataGrant(Remote Data Grant)
  ReferencedRemoteDataGrant(Referenced Remote Data Grant)
  DataRegistration(Data Registration)
  RemoteDataRegistration(Remote Data Registration)
  RemoteAgentDataRegistration(Remote Agent Data Registration)
  DataInstance(Data Instance)

  ApplicationRegistration -- hasAccessReceipt --> AccessReceipt
  AccessReceipt -- hasDataGrant --> DataGrant
  AccessReceipt -- hasRemoteDataGrant --> RemoteDataGrant

  DataGrant -- hasDataRegistration --> DataRegistration
  DataGrant -- hasReferencedDataGRant --> ReferencedDataGrant
  DataGrant -- hasDataInstance --> DataInstance
  ReferencedDataGrant -- hasDataRegistration --> DataRegistration
  ReferencedDataGrant -- hasDataGrant --> DataGrant
  ReferencedDataGrant -- hasDataInstance --> DataInstance

  RemoteDataGrant -- hasDataGrant --> DataGrant
  RemoteDataGrant -- hasReferencedDataGrant --> ReferencedDataGrant
  RemoteDataGrant -- hasReferencedRemoteDataGrant --> ReferencedRemoteDataGrant
  RemoteDataGrant -- hasRemoteDataRegistration --> RemoteDataRegistration
  RemoteDataGrant -- hasRemoteDataFromAgent --> RemoteAgentDataRegistration

  ReferencedRemoteDataGrant -- hasDataGrant --> DataGrant
  ReferencedRemoteDataGrant -- hasReferencedDataGrant --> ReferencedDataGrant
  ReferencedRemoteDataGrant -- hasRemoteDataRegistration --> RemoteDataRegistration
  ReferencedRemoteDataGrant -- hasRemoteDataGrant --> RemoteDataGrant
  ReferencedRemoteDataGrant -- hasRemoteDataFromAgent --> RemoteAgentDataRegistration
  RemoteDataRegistration -- hasRemoteAgentDataRegistration --> RemoteAgentDataRegistration
  
  RemoteAgentDataRegistration -- hasDataRegistration --> DataRegistration
  RemoteAgentDataRegistration -- satisfiesDataGrant --> DataGrant
  RemoteAgentDataRegistration -- satisfiesDataGrant --> ReferencedDataGrant
  
  DataRegistration -- ldp:contains --> DataInstance
```

```mermaid
graph TB
  AccessReceipt([Access Receipt])
  DataGrant([Data Grant - AllInstances])

  subgraph alice.example
   AccessReceipt -- :hasDataGrant --> DataGrant %%0
  end

  DataGrant -- :hasDataRegistration --> Projects %%1

  Registry([Data Registry - Omni])
  Projects([Data Registration - Omni Projects])
  PX([Data Instance - PX])
  PY([Data Instance - PY])
  PZ([Data Instance - PZ])

  subgraph omni.example
    Registry -- :hasDataRegistration --> Projects %%2
    Projects -- ldp:contains --> PX %%3
    Projects -- ldp:contains --> PY %%4
    Projects -- ldp:contains --> PZ %%5
  end

  %% granted
  classDef granted fill:#D5E8D4,stroke:#82B366
  class AccessReceipt,DataGrant granted
  class Projects,PX,PY,PZ granted

  linkStyle 0 stroke:#82B366
  linkStyle 1 stroke:#82B366
  linkStyle 2 stroke:gray
  linkStyle 3 stroke:#82B366
  linkStyle 4 stroke:#82B366
  linkStyle 5 stroke:#82B366

  %% unknown
  classDef unknown fill:#F5F5F5,stroke:gray
  class Registry unknown

```

```mermaid
graph TB
  AccessReceipt([Access Receipt])
  DataGrant([Data Grant - SelectedInstances])

  subgraph alice.example
   AccessReceipt -- :hasDataGrant --> DataGrant %%0
  end

  DataGrant -- :hasDataRegistration --> Projects %%1
  DataGrant -- :hasDataInstance --> P1 %%2
  DataGrant -- :hasDataInstance --> P3 %%3

  Registry([Data Registry - Omni])
  Projects([Data Registration - ACME Projects])
  P1([Data Instance - P1])
  P2([Data Instance - P2])
  P3([Data Instance - P3])

  subgraph acme.example
    Registry -- :hasDataRegistration --> Projects %%4
    Projects -- ldp:contains --> P1 %%5
    Projects -- ldp:contains --> P2 %%6
    Projects -- ldp:contains --> P3 %%7
  end

  %% granted
  classDef granted fill:#D5E8D4,stroke:#82B366
  class AccessReceipt,DataGrant,P1,P3 granted

  linkStyle 0 stroke:#82B366
  linkStyle 2 stroke:#82B366
  linkStyle 3 stroke:#82B366

  %% unknown
  classDef unknown fill:#F5F5F5,stroke:gray
  class Registry unknown

  linkStyle 4 stroke:gray

  %% denied
  classDef denied fill:#F8CECC,stroke:#B85450
  class Projects,P2 denied

  linkStyle 1 stroke:#B85450
  linkStyle 5 stroke:#B85450
  linkStyle 6 stroke:#B85450
  linkStyle 7 stroke:#B85450

```

```mermaid
graph TB
  AccessReceipt([Access Receipt])
  DataGrant([Data Grant - SelectedInstances])
  ReferencedDataGrant([Referenced Data Grant - InheritSelected ])

  subgraph alice.example
   AccessReceipt -- :hasDataGrant --> DataGrant %%0
   DataGrant -- :hasReferencedDataGrant --> ReferencedDataGrant %%1
  end

  DataGrant -- :hasDataRegistration --> Projects %%2
  ReferencedDataGrant -- :hasDataRegistration --> Tasks %%3
  DataGrant -- :hasDataInstance --> P1 %%4
  DataGrant -- :hasDataInstance --> P3 %%5

  Registry([Data Registry ACME])
  Projects([Data Registration - ACME Projects])
  Tasks([Data Registration - ACME TAsks])
  P1([Data Instance - P1])
  P2([Data Instance - P2])
  P3([Data Instance - P3])
  T1([Data Instance - T1])
  T2([Data Instance - T2])
  T3([Data Instance - T3])
  T4([Data Instance - T4])
  T5([Data Instance - T5])

  subgraph acme.example
    Registry -- :hasDataRegistration --> Projects %%6
    Registry -- :hasDataRegistration --> Tasks %%7
    Projects -- ldp:contains --> P1 %%8
    Projects -- ldp:contains --> P2 %%9
    Projects -- ldp:contains --> P3 %%10
    P1 -- ex:hasTask --> T1 %%11
    P1 -- ex:hasTask --> T2 %%12
    P2 -- ex:hasTask --> T3 %%13
    P2 -- ex:hasTask --> T4 %%14
    P3 -- ex:hasTask --> T5 %%15
  end

  %% granted
  classDef granted fill:#D5E8D4,stroke:#82B366
  class AccessReceipt,DataGrant,ReferencedDataGrant granted
  class P1,P3,T1,T2,T5 granted

  linkStyle 0 stroke:#82B366
  linkStyle 1 stroke:#82B366
  linkStyle 4 stroke:#82B366
  linkStyle 5 stroke:#82B366
  linkStyle 11 stroke:#82B366
  linkStyle 12 stroke:#82B366
  linkStyle 15 stroke:#82B366

  %% unknown
  classDef unknown fill:#F5F5F5,stroke:gray
  class Registry,P2,T3,T4 unknown

  linkStyle 6 stroke:gray
  linkStyle 7 stroke:gray
  linkStyle 8 stroke:gray
  linkStyle 9 stroke:gray
  linkStyle 10 stroke:gray
  linkStyle 13 stroke:gray
  linkStyle 14 stroke:gray

  %% denied
  classDef denied fill:#F8CECC,stroke:#B85450
  class Projects,Tasks denied

  linkStyle 2 stroke:#B85450
  linkStyle 3 stroke:#B85450

```

```mermaid
erDiagram
  DataGrant }o--|{ DataInstance : hasDataInstance
  DataGrant }o--|| DataRegistration : hasDataRegistration
  DataRegistration |o--o{ DataInstance : "ldp:contains"
  DataGrant {
    scopeOfGrant SelectedInstances
  }
```

```mermaid
erDiagram
  DataGrant }o--|| DataRegistration : hasDataRegistration
  DataGrant {
    scopeOfGrant AllInstances
  }
```

```mermaid
erDiagram
  DataGrant }o--|{ DataInstance : hasDataInstance
  DataGrant ||--o{ ReferencedDataGrant : hasReferencedDataGrant
  DataGrant }o--|| DataRegistration : hasDataRegistration
  ReferencedDataGrant }o--|| DataRegistration : hasDataRegistration
  DataRegistration |o--o{ DataInstance : "ldp:contains"
  DataGrant {
    scopeOfGrant SelectedInstances
  }
  ReferencedDataGrant {
    scopeOfGrant InheritInstances
  }
```