Tayeb LEMLOUMA and Nabil LAYAÏDA
Opera Project, INRIA RHONE ALPES
January 2002.
E-Mail: Tayeb.Lemlouma@inrialpes.fr, Nabil.Layaida@inrialpes.fr
(PDF)
We give here a complete example about the general format of profiles necessary to achieve the content negotiation. Profiles are defined in a way that gives a complete description of the environment and can be processed easily by the negotiation strategy to be implemented [3][5][4]. In the description we were based on the CC/PP [2] and RDF [1] model. We are intended to include all the diversity of users that may exist in a heterogeneous environment and using a universal description. This is why we avoid the use of some particular models which are limited to some kind of devices (such as the WAP UAProf [6] for WAP phones).
The example considers a mobile phone as end user and a server that provides HTTP services. Profiles given include the client profile and the related profiles in the client side, and a document instance profile and related profiles in the server side. In next steps of the work, a profile that describes network characteristics will be defined.
We define here necessary profiles concerning the client side. The device taken as example represents a mobile phone.
Figure1: The client
device
|
<?xml version="1.0"?>
<!-- Client Profile: "device-profiles/clientProfile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="ClientProfile">
<ccpp:component>
<rdf:Description rdf:about="TerminalHardware">
<rdf:type rdf:resource="HardwarePlatform" />
<neg:DeviceName>Ericsson-R320</neg:DeviceName>
<neg:screen>30X23mm</neg:screen>
<neg:display>101X52Pixels</neg:display>
<neg:PixelStretch>1.24</neg:PixelStretch>
<neg:row>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>Latin</neg:type>
<neg:value>5</neg:value>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>Chinese</neg:type>
<neg:value>3</neg:value>
</rdf:li>
</rdf:Bag>
</neg:row>
<neg:col>14</neg:col>
</rdf:Description>
</ccpp:component>
<ccpp:component>
<rdf:Description rdf:about="OnlySupportedResources">
<rdf:type rdf:resource="Resources" />
<neg:OnlySupportedResources>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>service</neg:type>
<neg:serviceDetail>WML</neg:serviceDetail>
<neg:format>wml</neg:format>
<neg:profile>device-profiles/wml-profile.xml</neg:profile>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>wbmp</neg:format>
<neg:profile>device-profiles/wbmp-profile.xml</neg:profile>
<neg:format>gif</neg:format>
<neg:profile>device-profiles/gif-profile.xml</neg:profile>
</rdf:li>
</rdf:Bag>
</neg:OnlySupportedResources>
</rdf:Description>
</ccpp:component>
<ccpp:component>
<rdf:Description rdf:about="PreferredSupportedResources">
<rdf:type rdf:resource="Resources" />
<neg:PreferredSupportedResources>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<type>image</type>
<neg:format>wbmp</neg:format>
<neg:prioriyLevel>2</neg:prioriyLevel>
<neg:format>gif</neg:format>
<neg:prioriyLevel>1</neg:prioriyLevel>
</rdf:li>
</rdf:Seq>
</neg:PreferredSupportedResources>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Client Resource Profile: "device-profiles/wml-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="ResourceClientProfile">
<ccpp:component>
<rdf:Description rdf:about="ContentRequierement">
<rdf:type rdf:resource="Content" />
<neg:content>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>WML element</neg:type>
<neg:signification>WML card</neg:signification>
<neg:name>card</neg:name>
<neg:specificConstraints>
<rdf:Bag>
<neg:maxSize>3000Bytes</neg:maxSize>
</rdf:Bag>
</neg:specificConstraints>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:signification>WML text</neg:signification>
<neg:OnlySupportedResources>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>element</neg:type>
<neg:signification>text style</neg:signification>
<rdf:li>small</rdf:li>
<rdf:li>bold</rdf:li>
<rdf:li>emphasis</rdf:li>
<rdf:li>strong</rdf:li>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>WML attribute</neg:type>
<neg:signification>text alignement</neg:signification>
<name>p/align</name>
<rdf:li>left</rdf:li>
<rdf:li>center</rdf:li>
<rdf:li>right</rdf:li>
</rdf:li>
</rdf:Bag>
</neg:OnlySupportedResources>
</rdf:li>
</rdf:Bag>
</neg:content>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Client Resource Profile: "device-profiles/wbmp-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="ResourceClientProfile">
<ccpp:component>
<rdf:Description rdf:about="ContentRequierement">
<rdf:type rdf:resource="Content" />
<neg:content>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>wbmp</neg:format>
<neg:specificConstraints>
<rdf:Bag>
<neg:maxSize>1500Bytes</neg:maxSize>
</rdf:Bag>
</neg:specificConstraints>
</rdf:li>
</rdf:Bag>
</neg:content>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Client Resource Profile: "device-profiles/gif-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="ResourceClientProfile">
<ccpp:component>
<rdf:Description rdf:about="ContentRequierement">
<rdf:type rdf:resource="Content" />
<neg:content>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>gif</neg:format>
<neg:specificConstraints>
<rdf:Bag>
<neg:testExpression>heightXwidthLE12000Bytes</neg:testExpression>
</rdf:Bag>
</neg:specificConstraints>
</rdf:li>
</rdf:Bag>
</neg:content>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
In this part, we give profiles concerning the server side. Profiles consider a document instance that exists on content server. The document taken is simply an HTML page that uses some media resources.
Document Instance Profile: EXAMPLE-html-profile.xml
<?xml version="1.0"?>
<!-- Document Instance Profile: "server-profiles/EXAMPLE-html-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="DocumentInstanceProfile">
<ccpp:component>
<rdf:Description rdf:about="DocumentInstanceDescription">
<rdf:type rdf:resource="DocumentResource"/>
<neg:type>HTML</neg:type>
<neg:format>html</neg:format>
<neg:version>4.01</neg:version>
<neg:doctype>http://www.w3.org/TR/html4/loose.dtd</neg:doctype>
<neg:name>EXAMPLE.html</neg:name>
<neg:size>910Bytes</neg:size>
<neg:location>NEGOTIATION/WAP/</neg:location>
<neg:server>http://yap.inrialpes.fr/</neg:server>
</rdf:Description>
</ccpp:component>
<ccpp:component>
<rdf:Description rdf:about="MultimediaContent">
<rdf:type rdf:resource="MediaResources" />
<neg:content>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>jpg</neg:format>
<neg:profile>profiles/background-jpg-profile.xml</neg:profile>
<neg:profile>profiles/phone-jpg-profile.xml</neg:profile>
<neg:profile>profiles/thank_you-jpg-profile.xml</neg:profile>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>gif</neg:format>
<neg:profile>profiles/realplayer-gif-profile.xml</neg:profile>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>audio</neg:type>
<neg:format>wav</neg:format>
<neg:profile>profiles/WapTechnology-wav-
profile.xml</neg:profile>
</rdf:li>
</rdf:Bag>
</neg:content>
</rdf:Description>
</ccpp:component><ccpp:component>
<rdf:Description rdf:about="AdaptableResourcesDescription">
<rdf:type rdf:resource="AdaptableResource" />
<neg:AdaptableResources>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<!-- a resume-->
<neg:type>textResume</neg:type>
<neg:format>xml</neg:format>
<neg:profile>profiles/EXAMPLE-xml-profile.xml</neg:profile>
<neg:adaptability>0.2</neg:adaptability>
</rdf:li>
</rdf:Alt>
</neg:AdaptableResources>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Resource Profile: "server-profiles/background-jpg-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="ResourceProfile">
<ccpp:component>
<rdf:Description rdf:about="MediaResourceDescription">
<rdf:type rdf:resource="MediaResource"/>
<neg:name>background.jpg</neg:name>
<neg:format>Joined Picture Expert Group</neg:format>
<neg:size>25824Bytes</neg:size>
<neg:location>smil/images/</neg:location>
<neg:server>http://yap.inrialpes.fr/</neg:server>
<neg:dimension>800X600Pixels</neg:dimension>
<neg:resolution>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:horizontal>300Pixels</neg:horizontal>
<neg:vertical>300Pixels</neg:vertical>
</rdf:li>
</rdf:Bag>
</neg:resolution>
<neg:color>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:ColorBit>24</neg:ColorBit>
<neg:ColorRepresentation>true RGB</neg:ColorRepresentation>
</rdf:li>
</rdf:Bag>
</neg:color>
</rdf:Description>
</ccpp:component>
<ccpp:component>
<rdf:Description rdf:about="AdaptableResourcesDescription">
<rdf:type rdf:resource="AdaptableResource"/>
<neg:AdaptableResources>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>gif</neg:format>
<neg:profile>profiles/background02-gif-profile.xml</neg:profile>
<neg:adaptatbilityValue>3</neg:adaptatbilityValue>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>method</neg:type>
<neg:outputformats>
<!-- includes just the formats that can be obtained from the original resource
format using the adaptation -->
<rdf:Bag>
<rdf:li>gif</rdf:li>
<rdf:li>wbmp</rdf:li>
</rdf:Bag>
</neg:outputformats>
<neg:profile>profiles/jpgtransformer-class-profile.xml</neg:profile>
</rdf:li>
</rdf:Alt>
</neg:AdaptableResources>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Adaptation Method Profile: "server-profiles/XML2LaTeX-xsl-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="AdaptationMethodProfile">
<ccpp:component>
<rdf:Description rdf:about="AdaptationMethodResourceDescription">
<rdf:type rdf:resource="AdaptationMethodResource"/>
<neg:type>XSLT style sheet</neg:type>
<neg:format>xsl</neg:format>
<neg:name>XML2LaTeX.xsl</neg:name>
<neg:size>19568Bytes</neg:size>
<neg:location>opera/people/Tayeb.Lemlouma/MULTIMEDIA/XSLT/</neg:location>
<neg:server>http://www.inrialpes.fr/</neg:server>
</rdf:Description>
</ccpp:component><ccpp:component>
<rdf:Description rdf:about="AdaptationMethodDescription">
<rdf:type rdf:resource="AdaptationMethod"/>
<neg:SubAdaptationMethods>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:InputRequirements>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>XML</neg:type>
<neg:format>xml</neg:format>
<neg:DTD>http://www.inrialpes.fr/opera/people/Tayeb.Lemlouma/
MULTIMEDIA/XSLT/LaTeXDTD.dtd</neg:DTD>
</rdf:li>
</rdf:Bag>
</neg:InputRequirements>
<neg:OutputDescription>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>LATEX</neg:type>
<neg:format>tex</neg:format>
</rdf:li>
</rdf:Bag>
</neg:OutputDescription>
</rdf:li></rdf:Bag>
</neg:SubAdaptationMethods>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<!-- Adaptation Method Profile: "server-profiles/ImageEncoder-class-profile.xml" -->
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ccpp="http://www.w3.org/2000/07/04-ccpp#"
xmlns:neg="http://www.tayeb.negotiation.org/2002/01/01-neg#">
<rdf:Description rdf:about="AdaptationMethodProfile">
<ccpp:component>
<rdf:Description rdf:about="AdaptationMethodResourceDescription">
<rdf:type rdf:resource="AdaptationMethodResource"/>
<neg:type>JAVA program</neg:type>
<neg:format>class</neg:format>
<neg:name>ImageEncoder.class</neg:name>
<neg:size>19770Bytes</neg:size>
<neg:location>NEGOTIATION/</neg:location>
<neg:server>http://yap.inrialpes.fr/</neg:server>
</rdf:Description>
</ccpp:component>
<ccpp:component>
<rdf:Description rdf:about="AdaptationMethodDescription">
<rdf:type rdf:resource="AdaptationMethod"/>
<neg:SubAdaptationMethods>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:InputRequirements>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>jpg</neg:format>
<neg:specificConstraints>
<rdf:Bag>
<neg:maxHeight>100Pixels</neg:maxHeight>
<neg:maxWidth>100Pixels</neg:maxWidth>
<neg:maxSize>1500Bytes</neg:maxSize>
</rdf:Bag>
</neg:specificConstraints>
</rdf:li>
</rdf:Bag>
</neg:InputRequirements>
<neg:OutputDescription>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>gif</neg:format>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>wbmp</neg:format>
</rdf:li>
</rdf:Bag>
</neg:OutputDescription>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<neg:InputRequirements>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>bmp</neg:format>
<neg:specificConstraints>
<rdf:Bag>
<neg:maxColorNumber>16</neg:maxColorNumber>
</rdf:Bag>
</neg:specificConstraints>
</rdf:li>
</rdf:Bag>
</neg:InputRequirements>
<neg:OutputDescription>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<neg:type>image</neg:type>
<neg:format>jpg</neg:format>
</rdf:li>
</rdf:Bag>
</neg:OutputDescription>
</rdf:li>
</rdf:Bag>
</neg:SubAdaptationMethods>
</rdf:Description>
</ccpp:component>
</rdf:Description>
</rdf:RDF>
The negotiation strategy must be able to process and handles defined profiles in order to deliver a content that reply to the client characteristics, capabilities and preferences. Normally, the negotiation strategy is applied by the content server or an intermediate proxy [3] and may require several messages exchange between the client and the server.
1. W3C, Resources Description Framework, http://www.w3.org/RDF
2. W3C, Composite Capabilities / Preferences Profiles, http://www.w3.org/TR/CCPP-struct-vocab/
3. Tayeb Lemlouma, Nabil Layaïda, NAC: A Basic Core for the Adaptation
and Negotiation of Multimedia Services, http://www.inrialpes.fr/opera/people/Tayeb.Lemlouma/Papers/ANegoP.pdf
4. Tayeb Lemlouma, Nabil Layaïda, A Framework for Media Resource Manipulation
in an Adaptation and Negotiation Architecture, http://www.inrialpes.fr/opera/people/Tayeb.Lemlouma/Papers/RSRS.pdf
5. Tayeb Lemlouma, Nabil Layaïda, The Negotiation of Multimedia Content
Services in Heterogeneous Environments, http://www.inrialpes.fr/opera/people/Tayeb.Lemlouma/Papers/MMM2001.pdf
6. WAP Forum, WAG UAProf version 20-Oct-2001, http://www1.wapforum.org/tech/documents/WAP-248-UAProf-20011020-a.pdf