
 
     
       
       
       
       
       
       
       
       
       
       
       
      Mentioning a predicate once says that other uses of it are errors.
<AuthorShape> { pub:authored @<ChapterShape>+ }
ShEx:
<Author1> pub:authored <Chapter1>, <Chapter2>, <SomeBlurb>, <#$%@#$%>.
SHACL:
<Author1> pub:authored <Chapter1>, <Chapter2>, <SomeBlurb>, <#$%@#$%>.
Mentioning it twice (multi-occurance) does the same.
<AuthorShape> { pub:authored @<ChapterShape>+, pub:authored @<BlurbShape> }
ShEx:
<Author1> pub:authored <Chapter1>, <Chapter2>, <SomeBlurb>, <#$%@#$%>.
SHACL:
<Author1> pub:authored <Chapter1>, <Chapter2>, <SomeBlurb>, <#$%@#$%>.
A property can be "EXTRA", meaning it's not policed.
<AuthorShape> EXTRA pub:authored { pub:authored @<ChapterShape>+, pub:authored @<BlurbShape> }
ShEx
<Author1> pub:authored <Chapter1>, <Chapter2>, <SomeBlurb>, <#$%@#$%>.
{
  "type": "schema",
  "prefixes": {},
  "shapes": {
    "http://a.example/IssueShape": {
      "type": "shape",
      "expression": {
        "type": "someOf",
        "expressions": [
          {
            "type": "tripleConstraint",
            "predicate": "http://a.example/p1",
            "value": { "type": "valueClass" }
          },
          {
            "type": "tripleConstraint",
            "predicate": "http://a.example/p2",
            "value": { "type": "valueClass" }
          }
        ]
      }
    }
  }
}