Help:Schema

From semantic-mediawiki.org
Help:SchemaSchema types
Example of a constraint schema

The "smw/schema" namespace has been introduced12 to allow Semantic MediaWiki or related extensions to store different structured type definition (aka schema).

To create, edit, or modify a page in the "smw/schema" namespace, the smw-schemaedit user right is necessary.

Further detailed information is available on the following pages:

  • Schema types contains details about available types and examples
  • Schema error handling explains how the JSON validation helps minimize inconsistency and maintenance effort for a schema

Objective

The objective of the SMW_NS_SCHEMA (aka smw/schema) namespace provides a structured definition space where different schemata types can be defined and that independently use a type specific interpreter, syntax elements, and possible constraints.

The namespace expects a JSON format (or if available, YAML as superset of JSON) as input format to ensure that content elements are structured and a validation_schema (see JSON schema) can be assigned to help and enforce requirements and constraints for a specific type.

The following annotation properties are provided to make elements of a schema and its definition discoverable.

  • Schema type (_SCHEMA_TYPE )
  • Schema definition (_SCHEMA_DEF)
  • Schema description (_SCHEMA_DESC)
  • Schema tag (_SCHEMA_TAG)
  • Schema link (_SCHEMA_LINK)

Registration

Extensibility for new schema types and interpreters is provided by adding a new type to the SchemaTypes::defaultTypes setting or via the SMW::Schema::RegisterSchemaTypes hook.

$schemaTypes = [
    'FOO_SCHEMA' => [
        'group' => SMW_SCHEMA_FOO_GROUP,
        'validation_schema => __DIR__ . '/data/schema/foo-schema.v1.json',
    ]
];

In the example above, FOO_SCHEMA refers to the type name and any attributes assigned to that type will be used when constructing a schema instance. Types can define individual attributes that may be use exclusively by the type. - group defines types belonging to the same schemata class - validation_schema links to the JSON schema expected to be used

Available types

Technical notes

/src/Schema (SMW\Schema)
│   ├─ Compartment
│   ├─ CompartmentIterator
│   ├─ Schema
│   ├─ SchemaDefinition
│   ├─ SchemaFactory
│   ├─ SchemaValidator
│   ├─ SchemaFilterFactory
│   └─ SchemaFilter
│       │
│       /src/Schema/Filters (SMW\Schema\Filters)
│       ├─ CategoryFilter
│       ├─ NamespaceFilter
│       ├─ PropertyFilter
│
/src/MediaWiki (SMW\MediaWiki)
    └─ Content
        ├─ SchemaContent
        ├─ SchemaContentFormatter
        └─ SchemaContentHandler

Filters

Filter conditions can be defined as aprt of a type to provide means to create conditional requirements.

Validation

As outlined above, the use of a JSON schema is an important part of a provided type to ensure that only specific data in an appropriate format can be stored and is validated against a normed vocabulary.


See also[edit]

References

  1. ^  Semantic MediaWiki: GitHub pull request gh:smw:3019
  2. ^  Semantic MediaWiki: GitHub pull request gh:smw:3431