# notation:
#  ᐃ: EXTENDS
#  ↦: inline shapeExpr
#  ⫏: CLOSED
#  ⏎: ShapeDecl separator
---
- schemaLabel: 1-5 - A = ⫏{:p 3}⏎ B = ᐃ@A{:p 2} OR {:q 4}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 1 - np2,3 @ A
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 2 ; :p 3 .
  queryMap: <n>@<A>
  status: conformant

- schemaLabel: 1-5 - A = ⫏{:p 3}⏎ B = ᐃ@A{:p 2} OR {:q 4}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 2 - np3;q4 @ A
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 3 ; :q 4 .
  queryMap: <n>@<A>
  status: conformant

- schemaLabel: 1-5 - A = ⫏{:p 3}⏎ B = ᐃ@A{:p 2} OR {:q 4}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 3 - np1,3 @ A
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 1 ; :p 3 .
  queryMap: <n>@<A>
  status: nonconformant

- schemaLabel: 1-5 - A = ⫏{:p 3}⏎ B = ᐃ@A{:p 2} OR {:q 4}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 4 - np1,3 @ B
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 1 ; :p 3 .
  queryMap: <n>@<B>
  status: nonconformant

- schemaLabel: 1-5 - A = ⫏{:p 3}⏎ B = ᐃ@A{:p 2} OR {:q 4}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 5 - np3,5 @ B
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 3 ; :p 5 .
  queryMap: <n>@<B>
  status: nonconformant

- schemaLabel: 6 - A = ⫏{}⏎ B = {:p 2; :p 4} OR ᐃ@A{}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> { :p [2] } OR { :q [4] }
  dataLabel: 6 - np2,4 @ B -- p2 unlabeled in paper
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 3 ; :p 5 .
  queryMap: <n>@<B>
  status: nonconformant

- schemaLabel: 7 - A = ⫏{p 3}⏎ B = ᐃ@A{}⏎ C = ᐃ@A{:p 2}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    <B> EXTENDS @<A> CLOSED {  }
    <C> EXTENDS @<B> { :p [2] }
  dataLabel: 7 - np2,3 @ A
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 2 ; :p 3 .
  queryMap: <n>@<A>
  status: conformant

- schemaLabel: 7' - A = ⫏{p 3}⏎ ∧B = ᐃ@A{p 4}⏎ C = ᐃ@B{:p 2}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [3] }
    ABSTRACT <B> EXTENDS @<A> CLOSED { :p [4] }
    <C> EXTENDS @<B> {  } # @@ not sure about C's content model
  dataLabel: 7 - np3,4 @ A
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 3 ; :p 4 .
  queryMap: <n>@<A>
  status: conformant

- schemaLabel: 8 - A ⫏{p 2}⏎ B ᐃ@A{p 3}⏎ C ᐃ@A{:p 4}⏎ D ᐃ@Bᐃ@C{:p 5}
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [2] }
    <B> EXTENDS @<A> { :p [3] }
    <C> EXTENDS @<A> { :p [4] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [5] }
  dataLabel: 8 - np2,3,4,5 @ D
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 2 ; :p 3 ; :p 4 ; :p 5 .
  queryMap: <n>@<D>
  status: conformant

- schemaLabel: EXTENDS OR
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [0]; :p [1] }
    <B> EXTENDS @<A> OR { :p [2] } { :p [3] }
    <C> EXTENDS { :p [0 1]+ } AND @<A> { :p [5] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [6] }
  dataLabel: shared parent
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 0, 1, 3, 5, 6 .
  queryMap: <n>@<D>
  status: conformant

- schemaLabel: EXTENDS OR
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>
    
    <A> CLOSED { :p [0]; :p [1] }
    <B> EXTENDS @<A> OR { :p [2] } { :p [3] }
    <C> EXTENDS { :p [0 1]+ } AND @<A> { :p [5] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [6] }
  dataLabel: missing parent
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 0, 1, 5, 6 .
  queryMap: <n>@<D>
  status: nonconformant

- schemaLabel: EXTENDS OR
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>

    <A> CLOSED { :p [0]; :p [1] }
    <B> EXTENDS @<A> OR { :p [2] } { :p [3] }
    <C> EXTENDS { :p [0 1]+ } AND @<A> { :p [5] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [6] }
  dataLabel: non-shared parent
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 0, 1, 2, 3, 5, 6 .
  queryMap: <n>@<D>
  status: conformant

- schemaLabel: feature tester
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>

    <A> CLOSED { :p [0]; :p [1] }
    <B> EXTENDS @<A> OR { :p [2] } { :p [3] }
    <C> EXTENDS { :p [0 1]+ } AND @<A> { :p [5] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [6]; :q .; ^:r . }
  dataLabel: shared parent
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 0, 1, 3, 5, 6 ; :q 7 .
    <n2> :r <n> .
  queryMap: <n>@<D>
  status: conformant

- schemaLabel: feature tester
  schema: |-
    PREFIX : <http://a.example/ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    BASE <http://a.example/>

    <A> CLOSED { :p [0]; :p [1] }
    <B> EXTENDS @<A> OR { :p [2] } { :p [3] }
    <C> EXTENDS { :p [0 1]+ } AND @<A> { :p [5] }
    <D> EXTENDS @<B> EXTENDS @<C> { :p [6]; :q .; ^:r . }
  dataLabel: missing parent
  data: |-
    PREFIX : <http://a.example/ns#>
    BASE <http://a.example/>

    <n> :p 0, 1, 5, 6 ; :q 7 .
    <n2> :r <n> .
  queryMap: <n>@<D>
  status: nonconformant

