Warning:
This wiki has been archived and is now read-only.
ApplicationProgrammingInterface
From Device Description Working Group Wiki
DDR API Sketch Input from Jose Cantera (TI+D)
// File: DDR-API.idl #ifndef _DDR_IDL_ #define _DDR_IDL_ // It depends on specifc issues that have to be resolved by the gro #include "dom.idl" #pragma prefix "w3c.org" module ddr { // A trade-off between concrete and generic exceptions should be taken exception DDRException { unsigned short code; any additionalData; // Additional data needed to describe more precisely the exception }; // Issue: Create specific exceptions or create a generic exception. // Specific exceptions are betters for Object Orientation exception DDRNoSuchProperty { string propertyName; }; // It is impossible to recognize the device, although it can be defaulted to to the delivery context??? exception DDRCannotRecognize { string reason; }; // Are we going to define groups of properties as in WURFL??? // It represents a unit. Issue: Are we going to define constants for each unit typedef unsigned short Unit; // XML-Schema datatype I suppose typedef string DataType; // What is this? Does the DDR needs to know about the URI of a property of the ontology? // Is property name an alias? typedef string PropertyName; // This the URI of the property according to the DC Ontology typedef string OntologyIdentifier; // Contextkey to be defined by context key task force struct ContextKey { }; // This the key that allows to identify specific pieces a device, a browser, a camera, a GPS ... // This key must be used independently of the delivery context // Example: Nokia_6600 or Opera_Mini_3 typedef string IndividualKey; // Path to a property of the delivery context // For example: /hasDevice/hasCamera/ typedef string DeliveryContextPath; typedef string InformalDescription; // i.e. Needs a human to interpret // Constant with a value that indicates that the property value is in the default units const Unit DEFAULT_UNIT = -1; // The value has no associated units const Unit NO_UNITS = -2; // A property in a DDR // This represents a property i.e. all the characteristics of a property interface DDRProperty { readonly attribute OntologyIdentifier id; readonly attribute PropertyName name; readonly attribute DataType type; readonly attribute Unit defaultUnit; readonly attribute InformalDescription description; }; // This is a property value measured in certain units, interface DDRPropertyValue { readonly attribute DDRProperty property; readonly attribute any value; readonly attribute Unit unit; }; // A lis of values for a property interface DDRPropertyValueList { readonly attribute unsigned long length; DDRPropertyValue item(in unsigned long index); }; // This represents an element of the delivery context // (Device, Browser, Display, Camera, etc) interface DCElementDescription { // What's a property name? URI according to the ontology? Shortcut? UAProf property?? DDRPropertyValue getPropertyValue(in DeliveryContextPath dcp) raises(DDRNoSuchProperty); // Does it raise an exception when the property is not available in that unit? // How to deal with this DDRPropertyValue getPropertyValueInUnits(in DeliveryContextPath dcp,in Unit unit) raises(DDRNoSuchProperty); DDRPropertyValueList getPropertyValues(in DeliveryContextPath propertyName) raises(DDRNoSuchProperty); DDRPropertyValueList getPropertyValuesInUnits(in DeliveryContextPath dcp,in Unit unit) raises(DDRNoSuchProperty); }; // This interface represents all the delivery context. // Using this interface I can ask for different properties of the delivery context interface DeliveryContext : DCElementDescription { DCElementDescription getDeliveryContextElement(in DeliveryContextPath path) raises(DDRNoSuchElement); }; module core { interface repository { DeliveryContext getDeliveryContext(in ContextKey contextKey) raises(DDRException); // This method allows the retrieval of individual descriptions but outside a delivery context DCElementDescription getIndividualDescription(in IndividualKey key) raises(DDRException); }; }; module resolution { struct ContextInfoPair { string element; string value; }; typedef sequence<ContextInfoPair> ContextInfo; interface ContextInformation { put(in string element,in string value); string get(in string element); ContextInfo getAll(); }; interface DeliveryContextResolutor { ContextKey resolve(in ContextInformation contextInfo) raises(DDRCannotRecognize); }; }; // To be defined Check the Requirements module admin { }; module extended { }; }; #endif