|
User
Site
Page
Actions
Search
DCMI Description Set Profile
Important: This document is currently in draft. Comments should please be sent to ( Editor: Mikael Nilsson <> 1. TODO
2. Issues so far
3. Introduction
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 [ 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, such as:
A DSP does not address the following:
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 (such as Functional Requirements for Bibliographic Records), guidelines on syntax and usage, and possibly data formats. The following figure depicts the basic elements of a Dublin Core Application Profile (this model will be elaborated in future documents).
4. Basic structureA 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:
While templates are used to express structures, constraints are used to limit those structures. The following figure depicts the basic elements of the structure.
5. Basic semanticsThe 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:
6. Usage examples6.1. Example 1: Constraining the resourceThe following DSP matches descriptions with a single resource. The resource must be an instance of foaf:Person.
<?xml version="1.0" ?>
<DescriptionSetProfile xmlns:foaf="http://xmlns.com/foaf/0.1/">
<DescriptionTemplate minOccurs="1" maxOccurs="1" standalone="yes">
<ResourceConstraint>
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</ResourceConstraint>
</DescriptionTemplate>
</DescriptionSetProfile>
As it stands, this DSP does not allow for the description of that resource to contain any statements, so it is not very useful. 6.2. Example 2: Constraining a propertyThe following DSP adds a mandatory foaf:name property with a literal value to the previous example.
<?xml version="1.0" ?>
<DescriptionSetProfile xmlns:foaf="http://xmlns.com/foaf/0.1/">
<DescriptionTemplate minOccurs="1" maxOccurs="1" standalone="yes">
<ResourceConstraint>
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</ResourceConstraint>
<StatementTemplate minOccurs="1" maxOccurs="1" type="literal">
<PropertyConstraint>
<InSet>
<Option value="foaf:name"/>
</InSet>
</PropertyConstraint>
</StatementTemplate>
</DescriptionTemplate>
</DescriptionSetProfile>
6.3. Example 3: Constraining the valueThe following DSP constrains the value to be a literal without a language.
<?xml version="1.0" ?>
<DescriptionSetProfile xmlns:foaf="http://xmlns.com/foaf/0.1/">
<DescriptionTemplate minOccurs="1" maxOccurs="1" standalone="yes">
<ResourceConstraint>
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</ResourceConstraint>
<StatementTemplate minOccurs="1" maxOccurs="1" type="literal">
<PropertyConstraint>
<InSet>
<Option value="foaf:name"/>
</InSet>
</PropertyConstraint>
<LiteralValueConstraint>
<LanguageConstraint occurrence="disallowed"/>
</LiteralValueConstraint>
</StatementTemplate>
</DescriptionTemplate>
</DescriptionSetProfile>
6.4. Example 4: Two resourcesThe 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" ?>
<DescriptionSetProfile xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:dcterms="http://purl.org/dc/terms/">
<DescriptionTemplate minOccurs="1" maxOccurs="1" standalone="yes">
<ResourceConstraint>
<MemberOf>
<Option value="dcterms:Text"/>
</MemberOf>
</ResourceConstraint>
<StatementTemplate minOccurs="1" type="nonliteral">
<PropertyConstraint>
<InSet>
<Option value="dcterms:creator"/>
</InSet>
</PropertyConstraint>
<NonLiteralConstraint description="person">
<ValueURIConstraint occurrence="disallowed"/>
<VESConstraint occurrence="disallowed"/>
<ValueStringConstraint maxOccur="0"/>
</NonLiteralConstraint>
</StatementTemplate>
</DescriptionTemplate>
<DescriptionTemplate standalone="no">
<ResourceConstraint>
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</ResourceConstraint>
<StatementTemplate minOccurs="1" maxOccurs="1" type="literal">
<PropertyConstraint>
<InSet>
<Option value="foaf:name"/>
</InSet>
</PropertyConstraint>
<LiteralValueConstraint>
<LanguageConstraint occurrence="disallowed"/>
</LiteralValueConstraint>
</StatementTemplate>
</DescriptionTemplate>
</DescriptionSetProfile>
7. Description TemplatesA description Template has the following attributes. 7.1. Identifier
7.2. Standalone
7.3. Minimum occurrence constraint
7.4. Maximum occurrence constraint
7.5. Resource Class Membership Constraint
8. Statement templatesA statement template has the following possible constraints. 8.1. Minimum occurrence constraint
8.2. Maximum occurrence constraint
8.3. Type constraint
Note: that the type constraint should follow any range given for the used properties. 8.4. Property constraintsThere are two ways of constraining the property in a statement:
Exactly one of the above methods must be used in a single statement template. 8.4.1. Property list constraint
8.4.2. Sub-property constraint
8.5. Literal value constraintsConstrains a literal value surrogate in a statement. Only allowed in the case that the type constraint has the value "literal".8.5.1. Literal list constraint
8.5.2. Literal language constraint
8.5.3. Literal language list constraint
8.5.4. Syntax Encoding Scheme constraint
8.5.5. Syntax Encoding Scheme list constraint
8.6. Non-literal value constraintsConstrains the value surrogate in a statement. Only allowed in the case that the type constraint has the value "nonliteral".8.6.1. Description template reference
8.6.2. Class membership constraint
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. 8.6.3. Value URI constraint8.6.3.1. Value URI occurrence constraint
8.6.3.2. Value URI list constraint
8.6.4. Vocabulary encoding scheme constraint8.6.4.1. Vocabulary encoding scheme occurrence constraint
8.6.4.2. Vocabulary encoding scheme list constraint
8.6.5. Value String ConstraintsIf 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. 8.6.5.1. Minimum occurrence constraint
8.6.5.2. Maximum occurrence constraint
8.6.5.3. Other constraintsAll Literal constraints can be used for value strings as well. 9. XML structure<?xml version="1.0" ?>
<DescriptionSetTemplate>
<DescriptionTemplate standalone="" minOccur="" maxOccur="">
<ResourceClass></ResourceClass>
<ResourceClass></ResourceClass>
<StatementTemplate minOccur="" maxOccur="" type="">
<Property></Property>
<Property></Property>
<SubPropertyOf></SubPropertyOf>
<NonliteralConstraint descriptionTemplateID="">
<ValueClass></ValueClass>
<ValueClass></ValueClass>
<ValueURIOccurrence></ValueURIOccurrence>
<ValueURI></ValueURI>
<ValueURI></ValueURI>
<VocabularyEncodingSchemeOccurrence></VocabularyEncodingSchemeOccurrence>
<VocabularyEncodingScheme></VocabularyEncodingScheme>
<VocabularyEncodingScheme></VocabularyEncodingScheme>
<ValueStringConstraint minOccur="" maxOccur="">
<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>
</DescriptonSetProfile>
10. RDF variant
<?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>
11. ExamplesSimple DC: <?xml version="1.0" ?>
<DescriptionSetTemplate xmlns:dcterms="http://purl.org/dc/terms/">
<DescriptionTemplate>
<StatementTemplate>
<PropertyConstraint>
<InSet>
<Option value="dcterms:title"/>
</InSet>
</PropertyConstraint>
</StatementTemplate>
<StatementTemplate>
<PropertyConstraint>
<InSet>
<Option value="dcterms:description"/>
</InSet>
</PropertyConstraint>
</StatementTemplate>
<!-- etc -->
</DescriptionTemplate>
</DescriptonSetProfile>
12. Simple FOAF
<?xml version="1.0" ?>
<DescriptionSetTemplate xmlns:foaf="http://xmlns.com/foaf/0.1/">
<DescriptionTemplate minOccurs="1" maxOccurs="1">
<ResourceConstraint>
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</ResourceConstraint>
<StatementTemplate minOccurs="1" maxOccurs="1" type="literal">
<PropertyConstraint>
<InSet>
<Option value="foaf:name"/>
</InSet>
</PropertyConstraint>
</StatementTemplate>
<StatementTemplate type="nonliteral">
<PropertyConstraint>
<InSet>
<Option value="foaf:knows"/>
</InSet>
</PropertyConstraint>
<NonLiteralConstraint decription="person">
<MemberOf>
<Option value="foaf:Person"/>
</MemberOf>
</NonLiteralConstraint>
</StatementTemplate>
<!-- etc -->
</DescriptionTemplate>
</DescriptonSetProfile>
RefreshCache for this page (cached 2007-10-11 00:46:04)
Immutable page (last edited 2007-08-25 07:16:36 by MikaelNilsson) |