DS Specifications
draft
draft
  • DS Specifications Overview
  • Domain Specifications
    • DS-V7
      • DS-V7 - Changelog
      • DS-V7 - Developer Notes
      • DS-V7 - Grammar
        • Domain Specification
          • @Context
          • Domain Specification Node
          • Property Node
          • Class Node
          • DataType Node
          • Enumeration Node
        • VerificationReport
          • Error List for the basic verification
          • Verification of schema.org annotations
          • Error List for the DS-based verification
          • Error List for the Meta verification of DS
      • DS-V7 - Examples
    • DS-V6
    • DS-V5
      • DS-V5 - Grammar
        • VerificationReport
          • Verification of schema.org annotations
          • Error List for the Meta verification of DS (unfinished)
          • Error List for the DS-based verification
        • Grammar and semantics of Domain Specifications
          • Property Node
          • Domain Specification Node
          • Class Node
          • Terms used in Domain Specifications
          • @Context
      • DS-V5 - Examples
    • DS-V4
    • DS-V3
      • DS-V3 - Examples
      • DS-V3 - Grammar
        • Grammar and semantics of Domain Specifications
          • SDO Enumeration
          • SDO Property
          • Domain Specification
          • SDO Class
          • SDO Datatype
          • @Context
    • DS-V2
      • DS-V2 - Grammar
        • Grammar and semantics of Domain Specifications
          • Grammar Documentation for node type "RestrictedEnumeration"
          • Grammar Documentation for node type "CustomEnumerationValue"
          • Grammar Documentation for node type "Enumeration"
          • Grammar Documentation for node type "Property"
          • Grammar Documentation for node type "RestrictedProperty"
          • Grammar Documentation for node type "DomainSpecification"
          • Grammar Documentation for node type "RestrictedClass"
          • Grammar Documentation for node type "EnumerationValue"
          • Grammar Documentation for node type "Class"
          • Grammar Documentation for node type "DataType"
        • Numeric Pattern
        • Grammar Documentation for node type "VerificationReport"
          • Grammar Documentation for node type "Error"
          • Error codes for Verification Reports
        • Rules Grammar
          • Grammar Documentation for node type "ComplexRule"
          • Grammar Documentation for node type "DateRule"
          • Grammar Documentation for node type "TextRule"
          • Grammar Documentation for node type "TimeRule"
          • Grammar Documentation for node type "NumberRule"
          • Grammar Documentation for node type "BooleanRule"
          • Grammar Documentation for node type "DateTimeRule"
      • DS-V2 - Examples
    • DS-V1
      • DS-V1 - Examples
      • DS-V1 - Grammar
  • SDO-Verification
  • Lists
    • List-V1
  • Vocabularies
  • DS-Vocabulary
    • Input
      • Vocabulary for Domain Specifications
      • DS-Vocabulary
    • DS-Vocab-V1
Powered by GitBook
On this page
  • 1. Example
  • 2. Key-value Table
  • 3. Semantics
  • 3.1. Class-Matching
  • 3.2. Properties
  • 3.3. Use of Internal references
  1. Domain Specifications
  2. DS-V7
  3. DS-V7 - Grammar
  4. Domain Specification

Class Node

PreviousProperty NodeNextDataType Node

Last updated 4 years ago

A Class Node is used as a potential range for a .

It is represented by an object with "@type": "sh:NodeShape" that is wrapped by the term sh:node. This NodeShape is used to express all the characteristics and constraints of the Class Node. The most important constraint is sh:class, which constraints the class(es) that the target entity must have. For sh:class arrays are allowed, which are supposed to represent multi-typed entities (MTE).

The @id of a Class Node is used to reference it in other parts of the Domain Specification, and so reuse already defined constraints for a specific Class. Details below.

1. Example

{
  "sh:node": {
    "@id": "https://semantify.it/ds/OBbzsh4_B#DpruH",
    "@type": "sh:NodeShape",
    "sh:class": [
      "schema:Airport"
    ],
    "sh:closed": true,
    "sh:property": [
      ...
    ]
  }
}

2. Key-value Table

The following table lists all possible terms that can be used by a Class Node. The order in the table reflects the recommended order of these terms within a Class Node (optional).

key

required

value type

description

related error

@id

true

IRI

The IRI of the Class Node, which is based on the DS IRI it is in

@type

true

"sh:NodeShape"

The fixed type for a Class Node

sh:class

true

[ IRI ]

The IRI(s) of the Class(es) that the entity must have

Non-conform range

sh:closed

false

Boolean

Specifies if additional properties are allowed or not

Non-conform property

sh:property

false

List of PropertyNode

A list of property nodes that apply to the entity

Missing Property, Non-conform Property

3. Semantics

3.1. Class-Matching

Examples:

"sh:class": [
  "schema:LodgingBusiness",
  "schema:Restaurant
]
"sh:class": [
  "schema:Article"
]

3.2. Properties

The terms sh:property and sh:closed are used in a Class Node to give further restrictions on the properties of the corresponding entity. Such a Class Node with property restrictions is also called Restricted Class Node. A Class Node without further property restrictions is called a Standard Class Node.

3.2.1. sh:property

Example:

"sh:property": [
  {
    "@type": "sh:PropertyShape",
    "sh:order": 0,
    "sh:path": "schema:identifier"
    "sh:maxCount": 1,
    "sh:or": [
      {
        "sh:datatype": "xsd:string",
      }
    ]
  },
  {
    "@type": "sh:PropertyShape",
    "sh:order": 1,
    "sh:path": "schema:alternateName"
    "sh:maxCount": 1,
    "sh:or": [
      {
       "sh:datatype": "xsd:string",
      }
    ]
  }
]

3.2.2. sh:closed

The term sh:closed can be used to specify if additional properties (other than the properties allowed by sh:property) are allowed or not. In the past, Domain Specifications had "sh:closed": true implicitly in all NodeShapes. Now the DS creator should specify the wished behaviour.

Example:

"sh:closed": true

3.3. Use of Internal references

In order to reference NodeShapes that are part of a DS, those NodeShapes need an IRI. It makes sense to give them the same BaseIRI as the DS in which they are in, with the addition of a fragment id, e.g. in the DS with the IRI https://semantify.it/ds/OBbzsh4_B there could be a NodeShape with the IRI https://semantify.it/ds/OBbzsh4_B#DpruH.

Example Class Node (inner NodeShape):

{
  "sh:node": {
    "@id": "https://semantify.it/ds/OBbzsh4_B#DpruH",
    "@type": "sh:NodeShape",
    "sh:class": ["schema:PostalAddress"],
    "sh:closed": true,
    "sh:property": [
      ...
    ]
  }
}

Example Property node that references the previous example Class node:

{
  "@type": "sh:PropertyShape",
  "sh:path": "schema:address",
  "sh:or": [
    {
      "sh:node": {
        "@id": "https://semantify.it/ds/OBbzsh4_B#DpruH"
      }
    }
  ]
}

In order to make the use of internal references more convenient, we introduce the following rules:

  • Every NodeShape inside a DS receives an IRI, even if it hasn't been referenced yet.

  • The NodeShape that specifies the class node (the referenced NodeShape) contains "@type": "sh:NodeShape" and all the constraints needed.

  • The internal references contain only the @id property. They can not add additional constraints.

  • Only valid matches can be used as a reference for a range, for this, the sh:class constraint of the target NodeShape is checked. If the target class of a NodeShape is schema:Hotel, but the property in question can not have that class as a valid range, then that NodeShape can not be referenced.

  • It is possible to create circular Domain Specifications.

See .

A Class Node includes sh:class to specify the class(es) that the verified entity MUST match. Domain Specifications use .

See .

The term sh:property lists the property shapes that the target entity must comply with. For every property, there is a corresponding in this list.

See .

Property Node
SHACL specification
custom semantics for class matching
SHACL specification
Property Node
SHACL specification