---
# System prepended metadata

title: Editorial Review of Interoperability Data Model
tags: [ShEx, Solid]

---

---
tags:
  - Solid
  - ShEx
---
# Editorial Review of Interoperability Data Model

## Present

- Eric P
- Justin B
- elf Pavlik

## Minutes

### Reviewing interop.shex

```turtle
<#DataConsentShape>
  <#DdataConsentAllShape>
  OR <#DataConsentAllFromAgentShape>
  OR <#DataConsentAllFromRegistryShape>
  # ...

<#DataConsentShape999> {
  a [ interop:DataConsent ] ;
  interop:dataOwner IRI ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:satisfiesAccessNeed IRI? ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent @<#:DataGrantScopes> ;
  interop:satisfiesAccessNeed IRI? ;
  ( interop:hasDataInstance IRI* |
    interop:hasDataResource IRI* ) ;
  interop:inheritsFromConsent IRI?
}

<#DataConsentAllShape> {
  a [ interop:DataConsent ] ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:satisfiesAccessNeed IRI? ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent [ interop:All ] ;
  interop:satisfiesAccessNeed IRI? .
}

<#DataConsentAllFromAgentShape> {
  a [ interop:DataConsent ] ;
  interop:dataOwner IRI ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:satisfiesAccessNeed IRI? ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent [ interop:AllFromAgent ] ;
  interop:satisfiesAccessNeed IRI? .
}

<#DataConsentAllFromRegistryShape> {
  a [ interop:DataConsent ] ;
  interop:dataOwner IRI ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:satisfiesAccessNeed IRI? ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent [ interop:AllFromRegistry ] ;
  interop:hasDataRegistration IRI ;
  interop:satisfiesAccessNeed IRI? .
}

<#DataConsentSelectedFromRegistryShape> {
  a [ interop:DataConsent ] ;
  interop:dataOwner IRI ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent [ interop:SelectedFromRegistry ] ;
  interop:hasDataRegistration IRI ;
  interop:hasDataInstance IRI+ ;
  interop:satisfiesAccessNeed IRI? .
}
<#DataConsentInheritedShape> {
  a [ interop:DataConsent ] ;
  interop:dataOwner IRI? ;
  interop:registeredAgent IRI ;
  interop:registeredShapeTree IRI ;
  interop:satisfiesAccessNeed IRI? ;
  interop:accessMode @<#:AccessModes>+ ;
  interop:creatorAccessMode @<#:AccessModes>* ;
  interop:scopeOfConsent [ interop:Inherited ] ;
  interop:hasDataRegistration IRI? ;
  interop:inheritsFromConsent IRI ;
  interop:satisfiesAccessNeed IRI? .
}
```

## Labeled Constraints:

```turtle
# Data Registration
<#ReusedTripleExpressions> {
  $<#CommonRegProps> (
    interop:registeredBy IRI ;
    interop:registeredWith IRI ;
    interop:registeredAt xsd:dateTime ;
    interop:updatedAt xsd:dateTime ;
  )
  $<#DataConsentProps> (
  )
}

<#DataRegistrationShape> {
  a [ interop:DataRegistration ] ;
  &<#CommonRegProps> ;
  interop:registeredShapeTree IRI ;
  interop:registeredType IRI*
}
```

```turtle
# Application Registration
<#ApplicationRegistrationShape> {
  a [ interop:ApplicationRegistration ] ;
  &<#CommonRegProps> ;
  interop:registeredAgent IRI ;
  interop:hasAccessGrant IRI ;
}
```

```turtle
# Social Agent Registration
<#SocialAgentRegistrationShape> {
  a [ interop:SocialAgentRegistration ] ;
  interop:registeredBy IRI ;
  interop:registeredWith IRI ;
  interop:registeredAt xsd:dateTime ;
  interop:updatedAt xsd:dateTime ;
  interop:registeredAgent IRI ;
  interop:hasAccessGrant IRI ;
  interop:reciprocalRegistration IRI?
}
```

## Use of "has" in properties vs. alternative casing

