Creator: |
Mikael
Nilsson KMR Group, NADA, KTH (Royal Institute of Technology), Sweden |
---|---|
Date Issued: | 2008-03-31 |
Identifier: | http://dublincore.org/specifications/dublin-core/dc-dsp/2008-03-31/ |
Replaces: | Not Applicable |
Latest Version: | http://dublincore.org/specifications/dublin-core/dc-dsp/ |
Status of Document: | This is a DCMI Working Draft. |
Description of Document: | This specification describes an information model and XML expression of a "Description Set Profile" (DSP). A DSP describes structural constraints on a description set, allowing for formal expression of the constraints of a Dublin Core™ Application Profile. |
The DCMI Description Set Profile specification describes an information model and XML expression of a "Description Set Profile" (DSP). The term description set and the associated concepts used in this specification are defined as in the DCMI Abstract model [DCAM].
A DSP is a way of describing structural constraints on a description set. It constrains the resources that may be described by descriptions in the description set, the properties that may be used, and the ways a value surrogate may be given.
A DSP can be used for many different purposes, for example:
A DSP does not address the following:
A DSP contains the formal syntactic constraints only, and will need to be combined with human-readable information, usage guidelines, version management, etc. in order to be used as an application profile. However, the design of the DSP information model is intended to facilitate the merging of DSP information and external information of the above kinds, for example by tools generating human-readable documentation for a Dublin Core™ Application Profile.
A Dublin Core™ Application Profile is a document, or set of documents, that puts a Description Set Profile into a broader context of Functional Requirements, Domain Models, guidelines on syntax and usage, and possibly data formats. See the Singapore Framework for Dublin Core™ Application Profiles for the broader picture.
A DSP describes the structure of a Description Set by using the notions of "templates" and "constraints". A template describes the possible metadata structures in a conforming record.
There are two levels of templates in a Description Set Profile:
Description templates , which contain the statement templates that apply to a single kind of description as well as constraints on the described resource.
Statement templates , which contain all the constraints on the property, value strings, vocabulary encoding schemes, etc. that apply to a single kind of statement.
While templates are used to express structures, constraints are used to limit those structures. The following figure depicts the basic elements of the structure.
The fundamental usage model for a DSP is to examine whether a metadata record matches the DSP.
Matching of a description set is defined as follows:
The following DSP matches descriptions with a single resource. The resource must be an instance of foaf:Person.
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31" > <DescriptionTemplate ID="person" minOccurs="1" maxOccurs="1" standalone="yes"> <ResourceClass>http://xmlns.com/foaf/0.1/Person</ResourceClass> </DescriptionTemplate> </DescriptionSetTemplate>
As it stands, this DSP does not allow for the description of that resource to contain any statements, so it is not very useful.
The following DSP adds a mandatory foaf:name property with a literal value to the previous example.
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31"> <DescriptionTemplate ID="person" minOccurs="1" maxOccurs="1" standalone="yes"> <ResourceClass>http://xmlns.com/foaf/0.1/Person</ResourceClass> <StatementTemplate minOccurs="1" maxOccurs="1" type="literal"> <Property>http://xmlns.com/foaf/0.1/name</Property> </StatementTemplate> </DescriptionTemplate> </DescriptionSetTemplate>
The following DSP constrains the value to be a literal without a language.
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31"> <DescriptionTemplate ID="person" minOccurs="1" maxOccurs="1" standalone="yes"> <ResourceClass>http://xmlns.com/foaf/0.1/Person</ResourceClass> <StatementTemplate minOccurs="1" maxOccurs="1" type="literal"> <Property>http://xmlns.com/foaf/0.1/name</Property> <LiteralConstraint> <LanguageOccurrence>disallowed</LanguageOccurrence> </LiteralConstraint> </StatementTemplate> </DescriptionTemplate> </DescriptionSetTemplate>
The following DSP allows for two kinds of resources: a single "document", and multiple "authors". The Person resources may only occur as values of the dcterms:creator property, not stand-alone. The value may only be described in a separate description with a mandatory foaf:name property.
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31"> <DescriptionTemplate ID="document" minOccurs="1" maxOccurs="1" standalone="yes"> <ResourceClass>http://purl.org/dc/terms/Text</ResourceClass> <StatementTemplate minOccurs="1" type="nonliteral"> <Property>http://purl.org/dc/terms/creator</Property> <NonLiteralConstraint descriptionTemplateID="person"> <ValueURIOccurrence>disallowed</ValueURIOccurrence> <VocabularyEncodingSchemeOccurrence>disallowed</VocabularyEncodingSchemeOccurrence> <ValueStringConstraint maxOccur="0"/> </NonLiteralConstraint> </StatementTemplate> </DescriptionTemplate> <DescriptionTemplate ID="person" standalone="no"> <ResourceClass>http://xmlns.com/foaf/0.1/Person</ResourceClass> <StatementTemplate minOccurs="1" maxOccurs="1" type="literal"> <Property>http://xmlns.com/foaf/0.1/name</Property> <LiteralConstraint> <LanguageOccurrence>disallowed</LanguageOccurrence> </LiteralConstraint> </StatementTemplate> </DescriptionTemplate> </DescriptionSetTemplate>
A description Template has the following attributes.
A statement template has the following possible constraints.
Note: that the type constraint should follow any range given for the used properties.
There are two ways of constraining the property in a statement: - By giving an explicit list of allowed properties
Exactly one of the above methods must be used in a single statement template.
Constrains a literal value surrogate in a statement. Only allowed in the case that the type constraint has the value "literal".
Constrains the value surrogate in a statement. Only allowed in the case that the type constraint has the value "nonliteral".
Note: this is not a syntactic constraint, and as such might not be evaluated by all processors. If a type statement is desired, an explicit Statement template in a Description Template for the value resource should be created.
If at least one value string constraint is given, any value string must match at least one of the constraints. If no value string constraint is given, any value string is allowed.
For each value string constraint, the following may be specified.
All Literal value constraints (section 6.5) can be used for value strings as well.
<?xml version="1.0" ?> <DescriptionSetTemplate> <DescriptionTemplate standalone="" ID="" minOccurs="" maxOccurs=""> <ResourceClass></ResourceClass> <ResourceClass></ResourceClass> <StatementTemplate ID="" minOccurs="" maxOccurs="" type=""> <Property></Property> <Property></Property> <SubPropertyOf></SubPropertyOf> <NonliteralConstraint descriptionTemplateRef=""> <ValueClass></ValueClass> <ValueClass></ValueClass> <ValueURIOccurrence></ValueURIOccurrence> <ValueURI></ValueURI> <ValueURI></ValueURI> <VocabularyEncodingSchemeOccurrence></VocabularyEncodingSchemeOccurrence> <VocabularyEncodingScheme></VocabularyEncodingScheme> <VocabularyEncodingScheme></VocabularyEncodingScheme> <ValueStringConstraint minOccurs="" maxOccurs=""> <LiteralOption lang="" SES=""></LiteralOption> <LiteralOption lang="" SES=""></LiteralOption> <LanguageOccurrence></LanguageOccurrence> <Language></Language> <Language></Language> <SyntaxEncodingSchemeOccurrence></SyntaxEncodingSchemeOccurrence> <SyntaxEncodingScheme></SyntaxEncodingScheme> <SyntaxEncodingScheme></SyntaxEncodingScheme> </ValueStringConstraint> </NonLiteralConstraint> <LiteralConstraint> <LiteralOption lang="" SES=""></LiteralOption> <LiteralOption lang="" SES=""></LiteralOption> <LanguageOccurrence></LanguageOccurrence> <Language></Language> <Language></Language> <SyntaxEncodingSchemeOccurrence></SyntaxEncodingSchemeOccurrence> <SyntaxEncodingScheme></SyntaxEncodingScheme> <SyntaxEncodingScheme></SyntaxEncodingScheme> </LiteralConstraint> </StatementTemplate> </DescriptionTemplate> </DescriptonSetTemplate>
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dsp="http://purl.org/dc/dsp/"> <dsp:DescriptionTemplate rdf:about="#d1"> <dsp:standalone rdf:datatype="xsd:boolean">true</dsp:standalone> <dsp:minOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:minOccur> <dsp:maxOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:maxOccur> <dsp:resourceClass rdf:resource=""/> <dsp:resourceClass rdf:resource=""/> <dsp:statementTemplate> <dsp:LiteralStatementTemplate> <dsp:minOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:minOccur> <dsp:maxOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:maxOccur> <dsp:property rdf:resource=""/> <dsp:property rdf:resource=""/> <dsp:subPropertyOf rdf:resource=""/> <dsp:literalConstraint> <dsp:LiteralConstraint> <dsp:literal xml:lang="" rdf:datatype=""></dsp:literal> <dsp:literal xml:lang="" rdf:datatype=""></dsp:literal> <dsp:languageOccurrence rdf:datatype="dsp:occurrence"></dsp:languageOccurrence> <dsp:language rdf:datatype="xsd:language"></dsp:language> <dsp:language rdf:datatype="xsd:language"></dsp:language> <dsp:syntaxEncodingSchemeOccurrence rdf:datatype="dsp:occurrence"></dsp:syntaxEncodingSchemeOccurrence> <dsp:syntaxEncodingScheme rdf:resource=""/> <dsp:syntaxEncodingScheme rdf:resource=""/> </dsp:LiteralConstraint> </dsp:literalConstraint> </dsp:LiteralStatementTemplate> </dsp:statementTemplate> <dsp:statementTemplate> <dsp:NonLiteralStatementTemplate> <dsp:nonLiteralConstraint> <dsp:NonLiteralConstraint> <dsp:descriptionTemplate rdf:resource=""/> <dsp:valueClass rdf:resource=""/> <dsp:valueClass rdf:resource=""/> <dsp:valueURIOccurrence rdf:datatype="dsp:occurrence"></dsp:valueURIOccurrence> <dsp:valueURI rdf:datatype="xsd:URI"></dsp:valueURI> <dsp:valueURI rdf:datatype="xsd:URI"></dsp:valueURI> <dsp:vocabularyEncodingSchemeOccurrence rdf:datatype="dsp:occurrence"></dsp:vocabularyEncodingSchemeOccurrence> <dsp:vocabularyEncodingScheme rdf:resource=""/> <dsp:vocabularyEncodingScheme rdf:resource=""/> <dsp:valueStringConstraint> <dsp:ValueStringConstraint> <dsp:minOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:minOccur> <dsp:maxOccur rdf:datatype="xsd:nonNegativeInteger">0</dsp:maxOccur> <dsp:literal xml:lang="" rdf:datatype=""></dsp:literal> <dsp:literal xml:lang="" rdf:datatype=""></dsp:literal> <dsp:languageOccurrence rdf:datatype="dsp:occurrence"></dsp:languageOccurrence> <dsp:language rdf:datatype="xsd:language"></dsp:language> <dsp:language rdf:datatype="xsd:language"></dsp:language> <dsp:syntaxEncodingSchemeOccurrence rdf:datatype="dsp:occurrence"></dsp:syntaxEncodingSchemeOccurrence> <dsp:syntaxEncodingScheme rdf:resource=""/> <dsp:syntaxEncodingScheme rdf:resource=""/> </dsp:ValueStringConstraint> </dsp:valueStringConstraint> </dsp:NonLiteralConstraint> </dsp:nonLiteralConstraint> </dsp:NonLiteralStatementTemplate> </dsp:statementTemplate> </dsp:DescriptionTemplate> </rdf:RDF>
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31"> <DescriptionTemplate> <StatementTemplate> <Property>http://purl.org/dc/terms/title</Property> </StatementTemplate> <StatementTemplate> <Property>http://purl.org/dc/terms/creator</Property> </StatementTemplate> <!-- etc --> </DescriptionTemplate> </DescriptionSetTemplate>
<?xml version="1.0" ?> <DescriptionSetTemplate xmlns="http://dublincore.org/xml/dc-dsp/2008/03/31"> <DescriptionTemplate ID="person" minOccur="1" maxOccur="1"> <ResourceClass>http://xmlns.com/foaf/0.1/Person</ResourceClass> <StatementTemplate minOccurs="1" maxOccurs="1" type="literal"> <Property>http://xmlns.com/foaf/0.1/name</Property> </StatementTemplate> <StatementTemplate type="nonliteral"> <Property>http://xmlns.com/foaf/0.1/knows</Property> <NonLiteralConstraint descriptionTemplateRef="person"> <ValueClass>http://xmlns.com/foaf/0.1/Person</ValueClass> </NonLiteralConstraint> </StatementTemplate> <!-- etc --> </DescriptionTemplate> </DescriptionSetTemplate>
2014-10-26: See also dcmi-dsp.xsd.