A description set profile is a document that describes the components of a metadata profile: the things the metadata describes, the terms it uses to describe those, the allowed values for the terms, rules relating to the values and terms, and human-readable documentation that guides the creation of valid metadata.
A description set is a document with one or more descriptions. The IRI of the description set identifies a single resource that may be described with multiple component descriptions, such as journal article metadata that has separate but linked descriptions for the text, the persons who authored the text, and the publisher responsible for publication.
##Administrative
Comment
Probably more administrative information is desired, including: creators, license terms for re-use. I have included Version because that seems to be a universal need. I don't know what else is essential, or if we can push this off to a vocabulary like VOID.
Summary
Topic areas covered by the metadata, such as "documents", "weather data", etc.
Comment
This is needed for discoverability. It could use dct:subject, or it could be done as a schema.org statement if the final document is in HTML. Probably we cannot work this out until we have a better idea of what the form (or forms) of DSP2 will be.
Allowed values
Ideally taken from a controlled list. Could be text or an IRI. If an IRI a label should be included for discoverability. Text can be provided as a comma-delimited string.
Default
none
Conditions
none
Name
topic
Summary
The version of the DSP2 document.
Allowed values
Any text
Conditions
None
Name
version
summary
The date of the version of the document in a standard date form: YYYYMMDD, YYYYMM, YYYY
Allowed values
Must be a valid date.
Conditions
none
Name
versionDate
A description describes a single resource; that resource is identified with an IRI.
Comment
I always thought of the descriptions as entities, but could a description be simply a set of properties that don't define an entity per se, such as a group of administrative properties?
Summary
Whether descriptions matching this template are allowed to occur standalone, i.e. without being the value of a property.
Comment
It would be good to have an example of a situation where this is essential. It seems that with graphs this could be too restrictive. Also this probably requires more validation logic than we can handle here.
Allowed values
"yes" / "no" / "either"
Default
none
Conditions
If standalone is "yes", a matching description may not be a description of value occurring elsewhere in the DSP. The description must "stand alone".
If standalone is "no", a matching description must be a description of value occurring elsewhere in the DSP.
If standalone is "either" then the description can be used either alone or as a value.
If standalone is not defined, then the description set is silent on this issue, which has the same affect as "either".
If this description template is referred to in a Value Constraint, standalone cannot be "yes".
Name
standalone
Summary
The minimum number of times this kind of description must appear in the Description Set.
Allowed values
non-negative integer
Default
0
If undefined, no minimum is enforced. Description is optional.
Any positive integer means the description is required for the resource identified by the description set.
Conditions
Must be equal or less than the Maximum occurrence
Name
minOccurs
Summary
The maximum number of times this kind of description is allowed to appear in the Description Set.
Comment
It may not be possible to use "infinity" if this is defined as datatype non-negative integer. Instead, if no maximum is given, no constraint is assumed (which = infinity)_
Allowed values
non-negative integer or "infinity"
Default
"infinity"
Conditions
Must be equal or greater than the Minimum occurrence. If there is no maximum to enforce, this constraint must not be included in the set.
Name
maxOccurs
Summary
Classes that the resource may be an instance of
Allowed values
a list of class URIs
Default
none
Conditions
if given, the resource must be an instance of one of the given classes. If this property is not used, there is no constraint on the what classes the description may be an instance of
Not clear why "resource" is used here. Until now this has been called a description. It might make sense to use resource, but we would have to do that throughout. Or we could talk about a "resource description".
Name
resourceClass
Summary
Relationship of a description to its statement(s).
Allowed values
IRI of a statement
Default
none
Conditions
There SHOULD be at least one statement associated with each description. There is no limit on the number of statements.
Name
hasStatement
A statement is a single data element that is used in the metadata to describe the resource that is identified in the description. A statement is identified with the IRI of an RDF vocabulary term. Statements are associated with/members of a description with the hasStatement property. The statement defines the valid values for the vocabulary term, and other constraints.
There are no limits on the number of statements that can be associated with a description. A description with no statements is not actionable.
A statement template has the following possible constraints.
Comment
Questions on this
1. Can the same property be associated with more than one statement?
2. Can there be properties that are not associated with a statement?
Name
Each statement has either an rdf:label property, or a label property from another vocabulary, such as SKOS.
Issue: should labels from the original vocabulary be used if no label is given in the description set?
Summary
The minimum number of times this kind of statement must appear in the enclosing Description. If the value of this property is zero ("0"), the this statement is not required.
Allowed values
non-negative integer
Default
0
Conditions
must be equal or less than the Maximum occurrence
Name
minOccurs
Summary
The maximum number of times this kind of statement is allowed to appear in the enclosing Description. If the value of this property is greater than one, then this property is repeatable. If no maxOccurs property is included in the profile, then the property is repeatable and there are no limits on how many times it can be repeated.
Comment
It may not be possible to use "infinity" if this is defined as datatype non-negative integer. Instead, if no maximum is given, no constraint is assumed (which = infinity)_
Allowed values
non-negative integer
Default
none
Conditions
must be equal or greater than the Minimum occurrence
Name
maxOccurs
Summary
The type of value that is allowed in this Statement.
Allowed values
"literal" / "nonliteral"
"Object" (IRI) / "Datatype" (xsd:)/ "literal" ()
Comment
The original values of literal and nonliteral followed the DCAM, and the constraints were based on DCAM notions of value surrogates. To move away from that, should this use object/data from OWL?
Would it be useful here to indicate that the value is a value list?
Default
If undefined, no further value constraints are applied.
Conditions
If not provided, there can be no constraints on the value. Same as OWL annotation property.
Name
valueType
Note: that the value type constraint should not contradict the range given for the used properties where they are originally defined.
Object values are always IRIs. IRIs can be complete or can be patterns that include the domain, domain name, or some portion of the IRI path.
e.g.s
http://id.loc.gov/authorities/names* ##limited to name authority list
http://id.loc.gov/authorities/* ##limited to any LC authority list
http://id.loc.gov/ ## limited to any LC IRIs at id.loc.gov
http://.gov/ ## allows any IRI from the .gov domain
Note that a DSP Description can be the value of an object statement.
Summary
IRIs that are allowed as values.
Allowed values
a list of IRIs that can be used as values. The list can also contain IRI "stubs" giving at least the
Default
no constraint
Conditions
none
Name
IRIList
Summary
For a given property, an IRI can appear only once
Allowed values
Yes / No
Default
no constraint
Conditions
This requires comparing values for some set of properties. This gets into complex validation because it looks at more than one property.
Name
UniqueIRI
Constrains a literal value in a statement. Only allowed in the case that the type constraint has the value "literal".
Comment
This can be a heading, but not sure that we need a property. We'll need to decide this after we model the RDF.
Name
LiteralConstraint
Summary
Literals that are allowed as values.
Allowed values
a list of literals, i.e. (string, language tag) or (string, syntax encoding scheme URI) pairs.
Default
no constraint
Conditions
if given, no other literal constraint may be given
Name
literalList
Summary
The maximum allowed length of the literal in bytes
Allowed values
non-negative integer
Default
no constraint
Conditions
Maximum length must be greater than or equal to minimum length
Name
literalMaxLength
Summary
The minimum allowed length of the literal in bytes
Allowed values
non-negative integer
Default
no constraint
Conditions
Minimum length must be less than or equal to maximum length
Name
literalMinLength
Summary
Whether languages are required for the literal
Comment
For validation purposes, the values seem to be yes/no, and optional is that this property is not included. But the difficulty is where there is no constraint but a set of valid language codes is given. That could be difficult to express as a validation statement.
Allowed values
"mandatory" / "optional" / "disallowed"
Default
"optional"
Conditions
(DCAM: if "mandatory", Syntax encoding schemes are automatically disallowed.)(Drop?)
Name
languageTag
Summary
For a given property, only one string can appear per language tag.
Allowed values
Yes / No
Default
no constraint
Conditions
This requires comparing values for some set of properties. This gets into complex validation because it looks at more than one property. It fulfills some SKOS requirements.
Name
UniqueIRI
Summary
Languages allowed for the literal. The language tag must be one of the tags
Comment
What is the format of the list? An RDF list? A comma-delimited list? Do the strings need to be in quotes: "@en","@de"? or @en,@de?
Can be tested with SHACL:languageIn. Language-tagged strings are defined as type http://www.w3.org/1999/02/22-rdf-syntax-ns#langString.
there also needs to be a constraint on each language can appear only once
Allowed values
a list consisting of language tags (@xx).
Default
no constraint
Conditions
This should only apply if languageTag is not "disallowed".
Name
validLanguageList
Summary
The datatype that is valid for this property
Allowed values
An xsd: datatype
Default
"optional"
Conditions
must be valid xsd: datatypes
Name
dataType
Summary
A list of xsd: datatypes that are valid for this property
Allowed values
a list consisting of xsd: datatypes
Default
no constraint
Conditions
Must be valid xsd: datatypes
Name
dataTypeList
Summary
Constraints on the actual values, such as "date must be > 1990"
Comment
This is something the validation languages can do. It isn't clear if there can be a simple form of this, but it is a common need.
Allowed values
text describing the desired constraints
Default
no constraint
Conditions
Name
dataTypeValue