@Context

DS-V5 uses almost the same @context as the previous version DS-V4 with some additions and changes.

Additions and changes

Additions to the @context are:

  • sh:languageIn

  • sh:equals

  • sh:disjoint

  • sh:lessThan

  • sh:lessThanOrEquals

  • ds (this is a namespace/vocabulary for DS related specifications, which is also part of DS-V5)

  • ds:usedVocabularies

Since we want to use sh:in to constraints the possible values for literals too (we used it only for enumeration values before), we have to remove the corresponding "@type": "@id" from the @context. This means, that enumeration values are now wrapped with @id:

in DS-V4

@context:
...
"sh:in": {
    "@id": "sh:in",
    "@type": "@id",
    "@container": "@list"
}
...
@graph:
...
{
    "sh:class": "schema:DayOfWeek",
    "sh:in": [
        "schema:Wednesday",
        "schema:Saturday",
        "schema:Thursday"
    ]
}
...

in DS-V5

@context:
...
"sh:in": {
    "@id": "sh:in",
    "@container": "@list"
}
...
@graph:
...
{
    "sh:class": "schema:DayOfWeek",
    "sh:in": [
        {
            "@id": "schema:Wednesday"
        },
        {
           "@id": "schema:Saturday"
        },
        {
           "@id": "schema:Thursday"
        }
    ]
}
...
{
    "sh:path": "schema:City",
    "sh:or": [
        {
            "sh:datatype": "xsd:string",
            "sh:in": [
                "Innsbruck",
                "Mayrhofen",
                "Seefeld"
            ]
        }
    ]
}

To enable a listing of allowed language tags without having a wrapping @list, we need to add the following to the context:

"sh:languageIn": {
    "@id": "sh:languageIn",
    "@container":"@list"
}

Value for property pair constraints have always an URI as values, so it wise to add that type in the context:

"sh:equals": {
    "@id": "sh:equals",
    "@type": "@id"
}

@context for DS-V5

{
  "@context": {
    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "sh": "http://www.w3.org/ns/shacl#",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "schema": "http://schema.org/",
    "sh:targetClass": {
      "@id": "sh:targetClass",
      "@type": "@id"
    },
    "sh:property": {
      "@id": "sh:property"
    },
    "sh:path": {
      "@id": "sh:path",
      "@type": "@id"
    },
    "sh:datatype": {
      "@id": "sh:datatype",
      "@type": "@id"
    },
    "sh:node": {
      "@id": "sh:node"
    },
    "sh:class": {
      "@id": "sh:class",
      "@type": "@id"
    },
    "sh:or": {
      "@id": "sh:or",
      "@container": "@list"
    },
    "sh:in": {
      "@id": "sh:in",
      "@container": "@list"
    },
    "sh:languageIn": {
       "@id": "sh:languageIn",
       "@container":"@list"
    },
    "sh:equals": {
       "@id": "sh:equals",
       "@type": "@id"
    },
    "sh:disjoint": {
       "@id": "sh:disjoint",
       "@type": "@id"
    },
    "sh:lessThan": {
       "@id": "sh:lessThan",
       "@type": "@id"
    },
    "sh:lessThanOrEquals": {
       "@id": "sh:lessThanOrEquals",
       "@type": "@id"
    },
    "ds": "http://vocab.sti2.at/ds/",
    "ds:usedVocabularies": {
      "@id": "ds:usedVocabularies",
      "@type": "@id"
    }
  }
}

Last updated