Skip to content

Instantly share code, notes, and snippets.

@ceztko
Last active June 10, 2022 06:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ceztko/aeefff37cbb728753fe314d21715b624 to your computer and use it in GitHub Desktop.
Save ceztko/aeefff37cbb728753fe314d21715b624 to your computer and use it in GitHub Desktop.
Schema to validate a demo XMP packet as found in ISO16684-2:2014
<?xml version="1.0" encoding="utf-8"?>
<!--
ISO 16884:1-2014 © ISO 2014
The source code for this schema can be freely used, in whole
or in part, without any constraints. The source code can be
used as the basis of derivative works. "Used" means that the
source code is copied, modified, distributed in its original
or a modified form, standalone or as part of something else,
including open source code and projects, commercially or
without charging fees.
-->
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" xmlns:xmpidq="http://ns.adobe.com/xmp/Identifier/qual/1.0/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Qualifier.xml-lang" combine="choice">
<rng:attribute name="xml:lang">
<rng:data type="string">
<rng:param name="pattern">x-default|([a-zA-Z]+(-[azA-Z0-9]+)*)</rng:param>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Qualifier.xmpidq-Scheme" combine="choice">
<rng:element name="xmpidq:Scheme">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Text" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Text"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Text" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Boolean" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Boolean"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Boolean"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Boolean" combine="choice">
<rng:data type="string">
<rng:param name="pattern">True|False</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Date" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Date"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Date"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Date" combine="choice">
<rng:data type="string">
<rng:param name="pattern">(\d{4}((-)?(0[1-9]|1[0-2])((-)?(0[1-9]|[1-2][0-9]|3[0-1])(T(24:00(:00(\.[0]+)?)?|(([0-1][0-9]|2[0-3])(:)[0-5][0-9])((:)[0-5][0-9](\.[\d]+)?)?)((\+|-)(14:00|(0[0-9]|1[0-3])(:)[0-5][0-9])|Z)?)?)?)?)</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Integer" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Integer"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Integer"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Integer" combine="choice">
<rng:data type="integer"/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Real" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Real"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Real"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Real" combine="choice">
<rng:data type="double"/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Rational" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Rational"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Rational"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Rational" combine="choice">
<rng:data type="string">
<rng:param name="pattern">\d+/[1-9]\d*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AgentName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AgentName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AgentName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AgentName" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.GUID" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.GUID"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.GUID"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.GUID" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Locale" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Locale"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Locale"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Locale" combine="choice">
<rng:data type="string">
<rng:param name="pattern">[a-zA-Z]+(-[a-zA-Z0-9]+)*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.MIMEType" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.MIMEType"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.MIMEType"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.MIMEType" combine="choice">
<rng:data type="string">
<rng:param name="pattern">(application|audio|example|image|message|model|multipart|text|video)/[a-zA-Z0-9]+([+\-.][a-zA-Z0-9]+)*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.ProperName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.ProperName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.ProperName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.ProperName" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.RenditionClass" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.RenditionClass"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.RenditionClass"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.RenditionClass" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.URI" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.URI"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.URI"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.URI" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.URL" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.URL"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.URL"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.URL" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Text" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Text"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Text" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Text" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Text"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Text" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Text" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Text"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Text" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Boolean" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Boolean"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Boolean"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Boolean" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Boolean"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Boolean" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Boolean"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Boolean"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Boolean" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Boolean"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Boolean" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Boolean"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Boolean"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Boolean" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Boolean"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Date" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Date"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Date"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Date" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Date" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Date"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Date"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Date" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Date" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Date"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Date"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Date" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Integer" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Integer"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Integer"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Integer" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Integer"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Integer" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Integer"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Integer"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Integer" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Integer"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Integer" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Integer"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Integer"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Integer" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Integer"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Real" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Real"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Real"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Real" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Real"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Real" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Real"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Real"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Real" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Real"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Real" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Real"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Real"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Real" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Real"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Rational" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Rational"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Rational"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Rational" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Rational"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.Rational" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Rational"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.Rational"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.Rational" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Rational"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AlternativeArray.Rational" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Rational"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AlternativeArray.Rational"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AlternativeArray.Rational" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Rational"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.LanguageAlternative" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.LanguageAlternative"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.LanguageAlternative"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.LanguageAlternative" combine="choice">
<rng:element name="rdf:Alt">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.Qualifier.xml-lang"/>
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.Locale" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Locale"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.Locale"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.Locale" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.Locale"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.UnorderedArray.ProperName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.ProperName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.UnorderedArray.ProperName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.UnorderedArray.ProperName" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.ProperName"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.OrderedArray.ProperName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.ProperName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.OrderedArray.ProperName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.OrderedArray.ProperName" combine="choice">
<rng:element name="rdf:Seq">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="ISO16684-1.Types.QValue.ProperName"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Qualifier.xml-lang" combine="choice">
<rng:attribute name="xml:lang">
<rng:data type="string">
<rng:param name="pattern">x-default|([a-zA-Z]+(-[azA-Z0-9]+)*)</rng:param>
</rng:data>
</rng:attribute>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Qualifier.xmpidq-Scheme" combine="choice">
<rng:element name="xmpidq:Scheme">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Text" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Text"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Text" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Boolean" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Boolean"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Boolean"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Boolean" combine="choice">
<rng:data type="string">
<rng:param name="pattern">True|False</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Date" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Date"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Date"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Date" combine="choice">
<rng:data type="string">
<rng:param name="pattern">(\d{4}((-)?(0[1-9]|1[0-2])((-)?(0[1-9]|[1-2][0-9]|3[0-1])(T(24:00(:00(\.[0]+)?)?|(([0-1][0-9]|2[0-3])(:)[0-5][0-9])((:)[0-5][0-9](\.[\d]+)?)?)((\+|-)(14:00|(0[0-9]|1[0-3])(:)[0-5][0-9])|Z)?)?)?)?)</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Integer" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Integer"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Integer"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Integer" combine="choice">
<rng:data type="integer"/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Real" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Real"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Real"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Real" combine="choice">
<rng:data type="double"/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Rational" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Rational"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Rational"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Rational" combine="choice">
<rng:data type="string">
<rng:param name="pattern">\d+/[1-9]\d*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.AgentName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.AgentName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.AgentName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.AgentName" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.GUID" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.GUID"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.GUID"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.GUID" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.Locale" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Locale"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Locale"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.Locale" combine="choice">
<rng:data type="string">
<rng:param name="pattern">[a-zA-Z]+(-[a-zA-Z0-9]+)*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.MIMEType" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.MIMEType"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.MIMEType"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.MIMEType" combine="choice">
<rng:data type="string">
<rng:param name="pattern">(application|audio|example|image|message|model|multipart|text|video)/[a-zA-Z0-9]+([+\-.][a-zA-Z0-9]+)*</rng:param>
</rng:data>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.ProperName" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.ProperName"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.ProperName"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.ProperName" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.RenditionClass" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.RenditionClass"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.RenditionClass"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.RenditionClass" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.URI" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.URI"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.URI"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.URI" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.URL" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.URL"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.URL"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.URL" combine="choice">
<rng:text/>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.QValue.ResourceRef" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.ResourceRef"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.ResourceRef"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Types.Base.ResourceRef" combine="choice">
<rng:element name="rdf:Description">
<rng:interleave>
<rng:optional>
<rng:ref name="stRef.documentID"/>
</rng:optional>
<rng:optional>
<rng:ref name="stRef.filePath"/>
</rng:optional>
<rng:optional>
<rng:ref name="stRef.instanceID"/>
</rng:optional>
<rng:optional>
<rng:ref name="stRef.renditionClass"/>
</rng:optional>
<rng:optional>
<rng:ref name="stRef.renditionParams"/>
</rng:optional>
</rng:interleave>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="stRef.documentID" combine="choice">
<rng:element name="stRef:documentID">
<rng:ref name="ISO16684-1.Types.QValue.GUID"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="stRef.filePath" combine="choice">
<rng:element name="stRef:filePath">
<rng:ref name="ISO16684-1.Types.QValue.URI"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="stRef.instanceID" combine="choice">
<rng:element name="stRef:instanceID">
<rng:ref name="ISO16684-1.Types.QValue.GUID"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="stRef.renditionClass" combine="choice">
<rng:element name="stRef:renditionClass">
<rng:ref name="ISO16684-1.Types.QValue.RenditionClass"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="stRef.renditionParams" combine="choice">
<rng:element name="stRef:renditionParams">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="ISO16684-1.Properties-dc" combine="choice">
<ui:schema>
<ui:label xml:lang="en" value="Dublin Core Metadata Element Set"/>
<ui:label xml:lang="de" value="Dublin Core Metadata Element Set"/>
<ui:description xml:lang="en" value="The Dublin Core Metadata ElementSet is a vocabulary of fifteen properties for use in resource description."/>
<ui:description xml:lang="de" value="Das Dublin Core Metadata ElementSet ist ein Wortschatz von fünfzehn Eigenschaften für die Beschreibung von Ressourcen."/>
</ui:schema>
<rng:interleave>
<rng:optional>
<rng:ref name="dc.contributor"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.coverage"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.creator"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.date"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.description"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.format"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.identifier"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.language"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.publisher"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.relation"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.rights"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.source"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.subject"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.title"/>
</rng:optional>
<rng:optional>
<rng:ref name="dc.type"/>
</rng:optional>
</rng:interleave>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.contributor" combine="choice">
<rng:element name="dc:contributor">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.ProperName"/>
<ui:property>
<ui:label xml:lang="en" value="List of contributors"/>
<ui:description xml:lang="en" value="Entities responsible formaking contributions to theresource. Examples of a contributor include a person, anorganization, or a service. Typically, the name of acontributor should beused to indicate the entity."/>
<ui:label xml:lang="de" value="Liste von Mitwirkenden"/>
<ui:description xml:lang="de" value="Entitäten, die dafürverantwortlich sind, Beiträge zu der Ressource zu erschaffen. Ein Mitwirkende kannbeispielsweise eine Person, eine Organisation oder ein Dienst sein. Üblicherweise wird derName des Mitwirkenden zur Bezeichnung der Entität benutzt."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.coverage" combine="choice">
<rng:element name="dc:coverage">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
<ui:property>
<ui:label xml:lang="en" value="Coverage"/>
<ui:description xml:lang="en" value="The spatial or temporaltopic of the resource, the spatial applicability of the resource, or the jurisdictionunder which the resource is relevant. Spatial topic and spatial applicability may be anamed place or a location specified by its geographic coordinates. Temporal topic may be anamed period, date, or date range. A jurisdiction may be a named administrative entity ora geographic place to which the resource applies. Recommended best practice is to use acontrolled vocabulary such as the Thesaurus of Geographic Names. Where appropriate, namedplaces or time periods can be used in preference to numeric identifiers such as sets ofcoordinates or date ranges."/>
<ui:label xml:lang="de" value="Abdeckung"/>
<ui:description xml:lang="de" value="Der räumlicheoder zeitliche Bezug der Ressource, deren räumliche Anwendbarkeit oder derZuständigkeitsbereich, für den die Ressource gilt. Der räumliche Bezug und die räumlicheAnwendbarkeit können z. B. als ein benannter oder durch geographische Koordinatenspezifizierter Ort ausgedrückt werden. Der zeitliche Bezug kann z. B. eine benanntePeriode, eine Zeitangabe oder ein Zeitraum sein. Ein Zuständigkeitsbereich kann einebenannte Verwaltungseinheit oder ein geographischer Ort sein, für den die Ressourcezutrifft. Generell wird empfohlen, ein kontrolliertes Vokabular wie den Thesaurus ofGeographic Names zu verwenden. Des Weiteren können dort, wo es angemessen ist, benannteOrte oder Zeitperioden gegenüber numerischen Identifikatoren, wie etwa Sätze vonKoordinaten oder Zeiträumen, bevorzugt werden."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.creator" combine="choice">
<rng:element name="dc:creator">
<rng:ref name="ISO16684-1.Types.QValue.OrderedArray.ProperName"/>
<ui:property>
<ui:label xml:lang="en" value="List of creators"/>
<ui:description xml:lang="en" value="An entity primarilyresponsible for making the resource. Examples of a Creator include a person, anorganization, or a service. Typically, the name of a Creator should be used to indicatethe entity."/>
<ui:label xml:lang="de" value="Liste der Ersteller"/>
<ui:description xml:lang="de" value="Liste der für dieErstellung der Ressource hauptsächlich Verantwortlichen. Ein Ersteller kann beispielsweiseeine Person, eine Organisation oder ein Dienst sein. Üblicherweise wird hierbei der Namedes Erstellers verwendet."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.date" combine="choice">
<rng:element name="dc:date">
<rng:ref name="ISO16684-1.Types.QValue.OrderedArray.Date"/>
<ui:property>
<ui:label xml:lang="en" value="List of dates"/>
<ui:description xml:lang="en" value="Points or periods of timeassociated with an event in the lifecycle of the resource. Date may be used to expresstemporal information at any level of granularity. "/>
<ui:label xml:lang="de" value="Liste von Zeitangaben"/>
<ui:description xml:lang="de" value="Liste von Zeitpunkten oderZeitspannen, die in Verbindung mit einem Ereignis im Entwicklungsprozess der Ressourcestehen. Eine Zeitangabe kann verwendet werden, um zeitliche Informationen auf jederGranularitäts-Ebene auszudrücken."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.description" combine="choice">
<rng:element name="dc:description">
<rng:ref name="ISO16684-1.Types.QValue.LanguageAlternative"/>
<ui:property>
<ui:label xml:lang="en" value="Description"/>
<ui:description xml:lang="en" value="An account of theresource. Description may include but is not limited to: an abstract, a table of contents,a graphical representation, or a free-text account of the resource."/>
<ui:label xml:lang="de" value="Beschreibung"/>
<ui:description xml:lang="de" value="Eine inhaltlicheZusammenfassung der Ressource. Eine Beschreibung kann beispielsweise ein Abstract, einInhaltsverzeichnis, eine graphische Darstellung oder eine Freitextbeschreibung derRessource sein, ist aber nicht darauf beschränkt."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.format" combine="choice">
<rng:element name="dc:format">
<rng:ref name="ISO16684-1.Types.QValue.MIMEType"/>
<ui:property>
<ui:label xml:lang="en" value="Format"/>
<ui:description xml:lang="en" value="The file format of theresource, using a MIME type value."/>
<ui:label xml:lang="de" value="Format"/>
<ui:description xml:lang="de" value="Das Dateiformat derRessource durch Angabe des MIME-Typs."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.identifier" combine="choice">
<rng:element name="dc:identifier">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
<ui:property>
<ui:label xml:lang="en" value="Identifier"/>
<ui:description xml:lang="en" value="An unambiguous referenceto the resource within a given context. Recommended best practice is to identify theresource by means of a string conforming to a formal identification system."/>
<ui:label xml:lang="de" value="Identifikator"/>
<ui:description xml:lang="de" value="Ein eindeutiger Hinweisauf die Ressource in einem gegebenen Kontext. Generell wird empfohlen, die Ressourcemittels einer Zeichenkette, die einem formell anerkannten Identifikationssystem entspricht,zu identifizieren."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.language" combine="choice">
<rng:element name="dc:language">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.Locale"/>
<ui:property>
<ui:label xml:lang="en" value="List of languages"/>
<ui:description xml:lang="en" value="List of languages used inthe content of the resource. Recommended best practice is to use a controlled vocabularysuch as RFC 4646."/>
<ui:label xml:lang="de" value="Liste der Sprachen"/>
<ui:description xml:lang="de" value="Liste der im Inhalt derRessource verwendeten Sprachen. Generell wird empfohlen, ein kontrolliertes Vokabular wiez. B. RFC 4646 zu benutzen."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.publisher" combine="choice">
<rng:element name="dc:publisher">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.ProperName"/>
<ui:property>
<ui:label xml:lang="en" value="List of publishers"/>
<ui:description xml:lang="en" value="A Publisher is an entityresponsible for making the resource available. Examples of a Publisher include a person,an organization, or a service. Typically, the name of a Publisher should be used toindicate the entity."/>
<ui:label xml:lang="de" value="Liste der Verleger"/>
<ui:description xml:lang="de" value="Ein Verleger isteine Entität, die dafür verantworlich ist, eine Ressource verfügbar zu machen. Ein/eVerleger/in kann beispielsweise eine Person, eine Organisation oder ein Dienst sein.Üblicherweise wird der Name des Verlegers zur Bezeichnung der Entität benutzt."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="dc.relation" combine="choice">
<rng:element name="dc:relation">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.rights" combine="choice">
<rng:element name="dc:rights">
<rng:ref name="ISO16684-1.Types.QValue.LanguageAlternative"/>
<ui:property>
<ui:label xml:lang="en" value="Rights"/>
<ui:description xml:lang="en" value="Information about rights heldin and over the resource. Typically, rights information includes a statement about variousproperty rights associated with the resource, including intellectual property rights."/>
<ui:label xml:lang="de" value="Rechteverwaltung"/>
<ui:description xml:lang="de" value="Informationen überRechte an der Ressource. Üblicherweise beinhalten Rechteinformationen Aussagen überverschiedenartige Eigentumsrechte, die mit der Ressource verbunden sind, einschließlichder Schutz- und Urheberrechte."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.source" combine="choice">
<rng:element name="dc:source">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
<ui:property>
<ui:label xml:lang="en" value="Source"/>
<ui:description xml:lang="en" value="A related resource fromwhich the described resource is derived. The described resource may be derived from therelated resource in whole or in part. Recommended best practice is to identify the relatedresource by means of a string conforming to a formal identification system."/>
<ui:label xml:lang="de" value="Quelle"/>
<ui:description xml:lang="de" value="Eine Ressource, vonder die beschriebene Ressource abgeleitet ist. Die beschriebene Ressource kann von derursprünglichen Quelle vollständig oder teilweise abgeleitet sein. Generell wird empfohlen,die ursprüngliche Quelle mittels einer Zeichenkette, die einem formell anerkanntenIdentifikationssystem entspricht, zu identifizieren."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.subject" combine="choice">
<rng:element name="dc:subject">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.Text"/>
<ui:property>
<ui:label xml:lang="en" value="List of keywords"/>
<ui:description xml:lang="en" value="List of descriptivephrases or keywords that specify the content of the resource. Recommended best practice isto use a controlled vocabulary. "/>
<ui:label xml:lang="de" value="Liste von Schlagwörtern"/>
<ui:description xml:lang="de" value="Liste beschreibender Sätzeoder Schlagwörter, die den Inhalt der Ressource beschreiben. Generell wird empfohlen, einkontrolliertes Vokabular zu verwenden."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.title" combine="choice">
<rng:element name="dc:title">
<rng:ref name="ISO16684-1.Types.QValue.LanguageAlternative"/>
<ui:property>
<ui:label xml:lang="en" value="Title"/>
<ui:description xml:lang="en" value="A name given to theresource."/>
<ui:label xml:lang="de" value="Titel"/>
<ui:description xml:lang="de" value="Ein der Ressourcegegebener Name."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ui="http://ns.iso.org/iso-16684-2/xmp-schema-ui-info/1.0" name="dc.type" combine="choice">
<rng:element name="dc:type">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.Text"/>
<ui:property>
<ui:label xml:lang="en" value="Type"/>
<ui:description xml:lang="en" value="The nature or genre of theresource. Recommended best practice is to use a controlled vocabulary such as the DCMIType Vocabulary."/>
<ui:label xml:lang="de" value="Typ"/>
<ui:description xml:lang="de" value="Art oder Genre derRessource. Generell wird empfohlen, ein kontrolliertes Vokabular wie z.B. das ‘DCMI TypeVocabulary’ zu benutzen."/>
</ui:property>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Properties-xmp" combine="choice">
<rng:interleave>
<rng:optional>
<rng:ref name="xmp.CreateDate"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.CreatorTool"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.Identifier"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.Label"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.MetadataDate"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.ModifyDate"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmp.Rating"/>
</rng:optional>
</rng:interleave>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.CreateDate" combine="choice">
<rng:element name="xmp:CreateDate">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.CreatorTool" combine="choice">
<rng:element name="xmp:CreatorTool">
<rng:ref name="ISO16684-1.Types.QValue.AgentName"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.Identifier" combine="choice">
<rng:element name="xmp:Identifier">
<rng:ref name="xmp.QValue.IdentifierArray"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.Label" combine="choice">
<rng:element name="xmp:Label">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.MetadataDate" combine="choice">
<rng:element name="xmp:MetadataDate">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.ModifyDate" combine="choice">
<rng:element name="xmp:ModifyDate">
<rng:ref name="ISO16684-1.Types.QValue.Date"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.Rating" combine="choice">
<rng:element name="xmp:Rating">
<rng:ref name="xmp.QValue.Rating"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.QValue.IdentifierArray" combine="choice">
<!-- Unordered array of text, items have optional xmpidq:Scheme qualifier. -->
<rng:choice>
<rng:ref name="xmp.Base.IdentifierArray"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="xmp.Base.IdentifierArray"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.Base.IdentifierArray" combine="choice">
<rng:element name="rdf:Bag">
<rng:zeroOrMore>
<rng:element name="rdf:li">
<rng:ref name="xmp.QValue.IdentifierItem"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.QValue.IdentifierItem" combine="choice">
<rng:choice>
<rng:ref name="ISO16684-1.Types.Base.Text"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="ISO16684-1.Types.Base.Text"/>
</rng:element>
<rng:ref name="ISO16684-1.Types.Qualifier.xmpidq-Scheme"/>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.QValue.Rating" combine="choice">
<rng:choice>
<rng:ref name="xmp.Base.Rating"/>
<rng:element name="rdf:Description">
<rng:element name="rdf:value">
<rng:ref name="xmp.Base.Rating"/>
</rng:element>
</rng:element>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmp.Base.Rating" combine="choice">
<rng:choice>
<rng:value type="float">-1</rng:value>
<rng:data type="float">
<rng:param name="minInclusive">0</rng:param>
<rng:param name="maxInclusive">5</rng:param>
</rng:data>
</rng:choice>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Properties-xmpMM" combine="choice">
<rng:interleave>
<rng:optional>
<rng:ref name="xmpMM.DerivedFrom"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpMM.DocumentID"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpMM.InstanceID"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpMM.OriginalDocumentID"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpMM.RenditionClass"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpMM.RenditionParams"/>
</rng:optional>
</rng:interleave>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.DerivedFrom" combine="choice">
<rng:element name="xmpMM:DerivedFrom">
<rng:ref name="ISO16684-1.Types.QValue.ResourceRef"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.DocumentID" combine="choice">
<rng:element name="xmpMM:DocumentID">
<rng:ref name="ISO16684-1.Types.QValue.GUID"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.InstanceID" combine="choice">
<rng:element name="xmpMM:InstanceID">
<rng:ref name="ISO16684-1.Types.QValue.GUID"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.OriginalDocumentID" combine="choice">
<rng:element name="xmpMM:OriginalDocumentID">
<rng:ref name="ISO16684-1.Types.QValue.GUID"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.RenditionClass" combine="choice">
<rng:element name="xmpMM:RenditionClass">
<rng:ref name="ISO16684-1.Types.QValue.RenditionClass"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpMM.RenditionParams" combine="choice">
<rng:element name="xmpMM:RenditionParams">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="ISO16684-1.Properties-xmpRights" combine="choice">
<rng:interleave>
<rng:optional>
<rng:ref name="xmpRights.Certificate"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpRights.Marked"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpRights.Owner"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpRights.UsageTerms"/>
</rng:optional>
<rng:optional>
<rng:ref name="xmpRights.WebStatement"/>
</rng:optional>
</rng:interleave>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpRights.Certificate" combine="choice">
<rng:element name="xmpRights:Certificate">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpRights.Marked" combine="choice">
<rng:element name="xmpRights:Marked">
<rng:ref name="ISO16684-1.Types.QValue.Boolean"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpRights.Owner" combine="choice">
<rng:element name="xmpRights:Owner">
<rng:ref name="ISO16684-1.Types.QValue.UnorderedArray.ProperName"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpRights.UsageTerms" combine="choice">
<rng:element name="xmpRights:UsageTerms">
<rng:ref name="ISO16684-1.Types.QValue.LanguageAlternative"/>
</rng:element>
</rng:define>
<rng:define xmlns:rng="http://relaxng.org/ns/structure/1.0" name="xmpRights.WebStatement" combine="choice">
<rng:element name="xmpRights:WebStatement">
<rng:ref name="ISO16684-1.Types.QValue.Text"/>
</rng:element>
</rng:define>
<rng:start xmlns:rng="http://relaxng.org/ns/structure/1.0">
<rng:element name="rdf:RDF">
<rng:element name="rdf:Description">
<rng:attribute name="rdf:about"/>
<rng:interleave>
<rng:ref name="ISO16684-1.Properties-dc"/>
<rng:ref name="ISO16684-1.Properties-xmp"/>
<rng:ref name="ISO16684-1.Properties-xmpMM"/>
<rng:ref name="ISO16684-1.Properties-xmpRights"/>
</rng:interleave>
</rng:element>
</rng:element>
</rng:start>
</rng:grammar>
<?xml version="1.0" encoding="utf-8"?>
<!-- This test XMP packet validates against the
reference schema -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about="">
<dc:format>application/pdf</dc:format>
<xmp:CreatorTool>Apache FOP Version SVN branches/fop-2_1</xmp:CreatorTool>
<xmp:CreateDate>2019-03-23T16:51:05Z</xmp:CreateDate>
<xmp:ModifyDate>2022-05-20T17:19:11+02:00</xmp:ModifyDate>
<xmp:MetadataDate>2019-03-23T16:51:05Z</xmp:MetadataDate>
</rdf:Description>
</rdf:RDF>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment