TSoRShape
type: NodeShape
target class: TSoR
property:
  path: hasRoot
  class: AnalysisElement
  name: A TSoR has exactly one root which is an analysis element
  min count: 1
  max count: 1
  severity: Violation
  message: A TSoR should have exactly one root through the property hasRoot, and this root must an AnalysisElement.
property:
  path: aggregFunction
  name: A TSoR has no more than one aggregation function
  max count: 1
  severity: Violation
  message: A TSoR should have 0 or 1 aggregFunction, no more.
property:
  path: label
  node kind: Literal
  name: TSoR label
  min count: 1
  severity: Info
  message: A TSoR should have at least one label.
property:
  path: description
  node kind: Literal
  name: TSoR description
  min count: 1
  severity: Info
  message: A TSoR should have at least one description.
property:
  path: creator
  name: TSoR creator
  min count: 1
  severity: Info
  message: A TSoR should have at least one creator.
property:
  path: created
  name: TSoR creation date
  min count: 1
  max count: 1
  severity: Info
  message: A TSoR should have exactly one creation date.

AnalysisElementShape
type: NodeShape
target class: AnalysisElement
property:
  path:
    inverse path: hasRoot
  class: TSoR
  name: An analysis element can be the root of a TSoR
  max count: 1
  severity: Violation
  message: An AnalysisElement can be associated with a maximum of one TSoR throught the property hasRoot.
property:
  path: weight
  or:
    datatype: integer
  or:
    datatype: float
  or:
    datatype: double
  or:
    datatype: decimal
  name: Analysis elements have no more than one weight, a positive number.
  min count: 0
  max count: 1
  min inclusive: 0
  severity: Violation
  message: An AnalysisElement should have 0 or 1 weight, no more. That weight should be positive number with one of the following xsd type: integer, float, double or decimal.
xone:
  property:
    path:
      inverse path: isSpecifiedBy
    class: AnalysisElement
    min count: 1
    max count: 1
    name: An analysis element either specifies another one, or is the root of the TSoR
    severity: Violation
    message: An AnalysisElement either specifies exactly one other AnalysisElement, being object of a property isSpecifiedBy, or is the root of exactly one TSoR, being object of a property hasRoot.
xone:
  property:
    path:
      inverse path: hasRoot
    class: TSoR
    min count: 1
    max count: 1
    name: An analysis element either specifies another one, or is the root of the TSoR
    severity: Violation
    message: An AnalysisElement either specifies exactly one other AnalysisElement, being object of a property isSpecifiedBy, or is the root of exactly one TSoR, being object of a property hasRoot.
property:
  path: hasContent
  name: Analysis elements have a content.
  min count: 0
  max count: 1
  severity: Violation
  message: An AnalysisElement should have 0 or 1 content throught hasContent relation.
or:
  property:
    path: isSpecifiedBy
    class: AnalysisElement
    min count: 1
    name: No unused analysis element. An analysis element is either specified by another one, or expects a requirement.
    severity: Warning
    message: No unused analysis element. An AnalysisElement must be subject of isSpecifiedBy, or of expects.
or:
  property:
    path: expects
    class: Requirement
    min count: 1
    name: No unused analysis element. An analysis element is either specified by another one, or expects a requirement.
    severity: Warning
    message: No unused analysis element. An AnalysisElement must be subject of isSpecifiedBy, or of expects.
or:
  and:
    property:
      path: isSpecifiedBy
      class: AnalysisElement
      min count: 1
      name: Uniformity of children types. An analysis element is either specified by another one, or expects a requirement, but not both.
      severity: Warning
      message: Uniformity of children types. An AnalysisElement must either be subject of isSpecifiedBy, or of expects, but not both.
  and:
    not:
      property:
        path: expects
        class: Requirement
        min count: 1
        name: Uniformity of children types. An analysis element is either specified by another one, or expects a requirement, but not both.
        severity: Warning
        message: Uniformity of children types. An AnalysisElement must either be subject of isSpecifiedBy, or of expects, but not both.
or:
  and:
    property:
      path: expects
      class: Requirement
      min count: 1
      name: Uniformity of children types. An analysis element is either specified by another one, or expects a requirement, but not both.
      severity: Warning
      message: Uniformity of children types. An AnalysisElement must either be subject of isSpecifiedBy, or of expects, but not both.
  and:
    not:
      property:
        path: isSpecifiedBy
        class: AnalysisElement
        min count: 1
        name: Uniformity of children types. An analysis element is either specified by another one, or expects a requirement, but not both.
        severity: Warning
        message: Uniformity of children types. An AnalysisElement must either be subject of isSpecifiedBy, or of expects, but not both.

RequirementShape
type: NodeShape
target class: Requirement
property:
  path:
    inverse path: expects
  class: AnalysisElement
  name: Requirement is expected by exactly one analysis element
  min count: 1
  max count: 1
  severity: Violation
  message: Requirement must be exactly once the object of relations expects, with subject an AnalysisElement.
property:
  path: isImplementedBy
  class: Implementation
  name: Requirement is implemented by one implementation maximum
  min count: 0
  max count: 1
  severity: Violation
  message: Requirement has 0 or 1 Implementation through the relation isImplementedBy.
property:
  path: weight
  or:
    datatype: integer
  or:
    datatype: float
  or:
    datatype: double
  or:
    datatype: decimal
  name: Requirements have no more than one weight, a positive number.
  min count: 0
  max count: 1
  min inclusive: 0
  severity: Violation
  message: A Requirements should have 0 or 1 weight, no more. That weight should be positive number with one of the following xsd type: integer, float, double or decimal.
property:
  path: hasContent
  name: Requirements have a content.
  min count: 1
  max count: 1
  severity: Violation
  message: An Requirement should have exactly one content throught hasContent relation.
property:
  path: isImplementedBy
  class: Implementation
  name: Complete implementation.
  min count: 1
  max count: 1
  severity: Warning
  message: Complete implementation. Each requirement should have exactly one implementation.

ImplementationShape
type: NodeShape
target class: Implementation
property:
  path: query
  name: Implementation has maximum one query.
  min count: 0
  max count: 1
  severity: Violation
  message: An implementation must not have more than one query.
property:
  path: url
  name: Implementation has maximum one URL.
  min count: 0
  max count: 1
  severity: Violation
  message: An implementation must not have more than one query.
or:
  property:
    path: query
    name: Implementation has one query.
    min count: 1
    severity: Warning
    message: Implementation should have one query or one URL.
or:
  property:
    path: url
    name: Implementation has one URL.
    min count: 1
    severity: Warning
    message: Implementation should have one query or one URL.