# 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 } ```