-- XSD schema extracted from ITU-T J.302 (10/2016)
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns:ARSTV="urn:arstv:ver1:represent:ARSTVmetadata:2011:07" xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:arstv:ver1:represent:ARSTVmetadata:2011:07" elementFormDefault="qualified" attributeFormDefault="unqualified">
<import namespace="urn:mpeg:mpeg7:schema:2001" schemaLocation="mpeg7-cdp-2004.xsd"/>
<!-- ################################################ -->
<element name="ARSTV" type="ARSTV:ARSTVType"/>
<complexType name="ARSTVType">
<sequence>
<element name="DescriptionMetadata" type="mpeg7:DescriptionMetadataType" minOccurs="0"/>
<element name="InitialInstruction" type="abm:InitialInstructionType" minOccurs="0" maxOccurs="unbounded"/>
<element name="Instruction" type="ARSTM:InstructionType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- ################################################ -->
<!-- Inital Instruction type -->
<!-- ################################################ -->
<element name="InitInstruction" type="arstv:InitialInstructionType"/>
<complexType name="InitialInstructionType">
<sequence>
<element name="AugmentedObject" type="arstv:AugmentedObjectType" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="ID" use="optional"/>
<attribute name="contentsNum" type="unsignedInt" use="optional"/>
</complexType>
<!-- ################################################ -->
<!-- Instruction Base type -->
<!-- ################################################ -->
<complexType name="InstructionBaseType" abstract="true">
<complexContent>
<restriction base="anyType">
<attribute name="id" type="ID" use="optional"/>
</restriction>
</complexContent>
</complexType>
<!-- ################################################ -->
<!-- Instruction type -->
<!-- ################################################ -->
<complexType name="InstructionType">
<complexContent>
<extension base="ARSTV:InstructionBaseType">
<sequence>
<element name="ReferenceResources" type="arstv:ReferenceResourcesType" minOccurs="0"/>
<element name="AugmentationRegion" type=" arstv:AugmentationRegionType" />
<element name="AugmentedObject" type=" arstv:AugmentedObjectType" />
<element name="EnvironmentInfo" type=" arstv:EnvironmentInfoType" minOccurs="0" maxOccurs="unbounded"/>
<element name="UserInteraction" type=" arstv:UserInteractionType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="firstInstFlag" type="boolean" use="required"/>
<attribute name="augRegionIndicator" type="unsignedInt" use="required"/>
<attribute name="pts" type="unsignedInt" use="required"/>
<attribute name="duration" type="unsignedInt" use="required"/>
<attribute name="timeScale" type="unsignedInt" use="required"/>
<attribute name="numInstruction" type="unsignedInt" use="required"/>
<attribute name="priority" type="unsignedInt" use="required"/>
</extension>
</complexContent>
</complexType>
<!-- ########################################## -->
<!-- Definition of Reference Resource Type -->
<!-- ########################################## -->
<complexType name="ReferenceResourcesType">
<sequence>
<element name="Resources" type="string" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- ########################################## -->
<!-- Definition of Augmentation Region Type -->
<!-- ########################################## -->
<complexType name="AugmentationRegionType">
<sequence>
<element name="TransformMatrix" type="ARSTV:FloatMatrixType" minOccurs="0"/>
<element name="Coordinates" type="ARSTV:CoordinateType" minOccurs="0"/>
<element name="SRT" type="ARSTV:SRTType" minOccurs="0"/>
</sequence>
</complexType>
<complexType name="CoordinateType">
<attribute name="x1" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="y1" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="z1" type="ARSTV:minusOneToOneType" use="required"/>
<attribute name="x2" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="y2" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="z2" type="ARSTV:minusOneToOneType" use="required"/>
<attribute name="x3" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="y3" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="z3" type="ARSTV:minusOneToOneType" use="required"/>
<attribute name="x4" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="y4" type="ARSTV:zeroToOneType" use="required"/>
<attribute name="z4" type="ARSTV:minusOneToOneType" use="required"/>
</complexType>
<complexType name="SRTType">
<attribute name="sx" type="float" use="required"/>
<attribute name="sy" type="float" use="required"/>
<attribute name="sz" type="float" use="required"/>
<attribute name="rx" type="float" use="required"/>
<attribute name="ry" type="float" use="required"/>
<attribute name="rz" type="float" use="required"/>
<attribute name="tx" type="float" use="required"/>
<attribute name="ty" type="float" use="required"/>
<attribute name="tz" type="float" use="required"/>
</complexType>
<!-- FloatMatrixType -->
<complexType name="FloatMatrixType">
<simpleContent>
<extension base="ARSTV:FloatVector">
<attribute ref="mpeg7:dim" use="required"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="FloatVector">
<list itemType="float"/>
</simpleType>
<simpleType name="zeroToOneType">
<restriction base="float">
<minInclusive value="0.0"/>
<maxInclusive value="+1.0"/>
</restriction>
</simpleType>
<simpleType name="minusOneToOneType">
<restriction base="float">
<minInclusive value="-1.0"/>
<maxInclusive value="+1.0"/>
</restriction>
</simpleType>
<!-- ########################################## -->
<!-- Definition of Augmented Object Type -->
<!-- ########################################## -->
<complexType name="AugmentedObjectType">
<choice>
<element name="Inline" type="mpeg7:InlineMediaType" minOccurs="0"/>
<element name="Remote" type="anyURI" minOccurs="0"/>
<element name="Tactile" type="arstv:TactileType" minOccurs="0"/>
</choice>
<attribute name="targetID" type="anyURI" use="optional"/>
<attribute name="clearFlag" type="boolean" use="optional"/>
<attribute name="service" type="unsignedInt" use="optional" default="1"/>
<simpleType>
<restriction base="string">
<enumeration value="happy"/>
<enumeration value="sad"/>
<enumeration value="angry"/>
<enumeration value="sick"/>
</restriction>
</simpleType>
</attribute>
</complexType>
<!-- ########################################## -->
<!-- Definition of Tactile Type -->
<!-- ########################################## -->
<complexType name="TactileType">
<sequence>
<element name="ArrayIntensity" type="mpeg7:FloatMatrixType"/>
</sequence>
<attribute name="tactileEffect" type="arstv:tactileEffectType" use="required"/>
<attribute name="timeSamples" type="positiveInteger" use="required"/>
</complexType>
<simpleType name="tactileEffectType">
<restriction base="string">
<enumeration value="pressure"/>
<enumeration value="vibration"/>
<enumeration value="electric"/>
</restriction>
</simpleType>
<!-- ########################################## -->
<!-- Definition of Environment Info Type -->
<!-- ########################################## -->
<complexType name="EnvironmentInfoType">
<sequence>
<element name="GlobalPosition" type="arstv:GlobalPositionType" minOccurs="0" maxOccurs="unbounded"/>
<element name="Light" type="arstv:LightType" minOccurs="0" maxOccurs="unbounded"/>
<element name="Camera" type="arstv:CameraType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--#################################### -->
<!--Definition of Global Position type -->
<!--#################################### -->
<complexType name="GlobalPositionType">
<sequence>
<element name="Address" type="mpeg7:PlaceType" minOccurs="0"/>
</sequence>
<attribute name="longitude" use="required">
<simpleType>
<restriction base="double">
<minInclusive value="-180.0"/>
<maxInclusive value="180.0"/>
</restriction>
</simpleType>
</attribute>
<attribute name="latitude" use="required">
<simpleType>
<restriction base="double">
<minInclusive value="-90.0"/>
<maxInclusive value="90.0"/>
</restriction>
</simpleType>
</attribute>
</complexType>
<!--#################################### -->
<!--Definition of Light type -->
<!--#################################### -->
<complexType name="LightType">
<sequence>
<element name="Position" type="ARSTV:DirectionType" minOccurs="0"/>
<element name="Rotation" type="ARSTV:RotationType" minOccurs="0"/>
</sequence>
<attribute name="type" type="unsignedInt" use="optional"/>
<attribute name="color" type="ARSTV:ColorType" use="optional"/>
<attribute name="intensity" type="ARSTV:zeroToOneType"/>
</complexType>
<complexType name="PositionType">
<attribute name="px" type="float" use="optional"/>
<attribute name="py" type="float" use="optional"/>
<attribute name="pz" type="float" use="optional"/>
</complexType>
<complexType name="RotationType">
<attribute name="vx" type="float" use="optional"/>
<attribute name="vy" type="float" use="optional"/>
<attribute name="vz" type="float" use="optional"/>
</complexType>
<!--#################################### -->
<!--Definition of Color type -->
<!--#################################### -->
<simpleType name="ColorType">
<restriction base="NMTOKEN">
<whiteSpace value="collapse"/>
<pattern value="#[0-9A-Fa-f]{6}"/>
</restriction>
</simpleType>
<!--#################################### -->
<!--Definition of Camera type -->
<!--#################################### -->
<complexType name="CameraType">
<attribute name="fov" type="float" use="optional"/>
</complexType>
<!-- ########################################## -->
<!-- Definition of User Interaction Type -->
<!-- ########################################## -->
<complexType name="UserInteractionType">
<sequence>
<element name="Resource" type="arstv:ResourceType" minOccurs="0"/>
<element name="SRT" type="arstv:SRTType" minOccurs="0"/>
</sequence>
<attribute name="event" type="unsignedInt" use="optional"/>
</complexType>
</schema>