- From: Rhys Lewis <rhys@volantis.com>
- Date: Fri, 4 May 2007 00:56:17 -0700 (PDT)
- To: <public-ddwg@w3.org>
- Message-ID: <008901c78e21$e648e3b0$8a1e140a@volantisuk>
Hello everyone, Following the various discussions we've had about the nature of properties, I've uploaded a new, publicly accessible version of the ontology to explore some of the ideas [1]. I've been looking at possible representations both for properties that have some aspects that don't vary and some that do. I took the values for the total and usable number of pixels in the horizontal and vertical directions of a display and worked on them based on our recent debates. In previouls versions of the ontology, (for example [2]) these properties were represented as single values. As a result of discussion, we came to the conclusion that that was insufficient. We recognised that it is possible for some properties to vary on some devices. We also recognised that for some properties, the DDR could not store the actual current value of a property, because that could only be found by asking the device itself. On the other hand, even in these cases, the DDR could store useful information, such as the range of values that a property could take or a default value. Let's look at a couple of concrete examples. I'll use 'hasTotalDisplayPixelsY', the total number of pixels on the display in the vertical direction as a one example, and the new 'hasBatteryLevel' as another. Jose suggested this one. The example device is the SonyEricsson p910i, once more, both because I have one, and because it's screen height does change when the 'flip' is opened. Opening the flip also changes the keyboard, by the way, but that's a discussion for a different property. Screen Size ------------------ Because the screen height can change on the P910i, a single value for 'hasTotalDisplayPixelsY' in the ontology is inappropriate. Because the height changes in response to a user opening or closing the flip on a particular instance of the device, the DDR can't know at any point in time the actual height of the screen. However, the DDR can know the size of the screen with the flip closed and the size with the flip open. I've modelled this in the ontology by changing the value associated with 'hasTotalDisplayPixelsY' from a single integer to a new class called PixelCount. You can see the definition at [3]. I chose to use 4 values here, based on previous debate. The maximum and minimum values, current value and default value are explicitly represented. A DDR could answer questions about the maximum, minimum and default values, since these are common to every instance of the device. It can also provide the current value IF the value can't change between different instances of the device. In this particular example, the DDR can infer the current value if the maximum and minimum values are the same. In the examples within the section on PixelCount[3] you can see that the instance 'PixelCount_P920i_Total_Y' has different maximum and minumum values, meaning that the DDR can't know the actual value on a particular handset. It can, however, report maximum, minimum and default values. However, for the instance 'PixelCount_P920i_X' (and yes, there is a good reason why the name doesn't include 'Total') the DDR could return the current value because the maximum and minimum are the same. A number of people have commented that not all properties necessarily need all of these sorts of facets, and that the approach based on maxima and minima is not necessarily appropriate for every property. I agree with that. However, I think this example illustrates an approach that can work for this kind of data. We may need other ways to represent other properties. Battery Level ------------------- During the debate, it was also pointed out that some properties don't have meaningful default values and may have fixed ranges, making the storage of maxima and minima less than useful. A good example that came up is battery level. To model this, I added a Battery class to the ontology and gave it a couple of properties. You can see it in the document at [4]. I modelled the capacity of the battery and its current level. The capacity is a fixed property for a particular battery. The level is not. I confess to adding capacity simply because it allowed me to add a new set of units of measure, based on electric charge. It took me right back to school Physics! However, for this discussion, the important property is the battery level. I chose to represent this as a floating point value between 0 and 1. Since that range is 'baked in' to the ontology, there is no point in representing the maximum and minimum explicitly, since it's the same for every instance of every battery. So in this particular case, the ontology has just a single value that represents the current battery level. Unlike 'hasTotalDisplayPixelsY', we don't need a class to represent the property. What about the APIs? ------------------------------- My main conclusion from this exercise is that we can model the various situations we've identified quite easily in the ontology. I've shown a couple of different examples. I also think the approach to handling current value, range of possible values, and default value shown for 'hasTotalDisplayPixelsY' actually sits quite well with the DDR API. For example, if we ask the DDR for the total number of pixels in the vertical direction of the display for a particular device and the value can't change, the DDR can simply answer with the value. However, if the value can change, the DDR can return a code indicating that the value is variable. We could then choose to ask the DDR about maximum, minimum, default or whatever else kinds of values we might find useful. In the case of the battery level, we might decide that there is no value in the DDR providing such a property at all, since there is no useful information that it can provide. The range is fixed, so we don't need to store it. There also seems to be no value in a default value for battery level. The overall consequence is that the ontology entry for battery level would simply not appear in the DD core vocabulary. Rotan pointed this out originally. Other interfaces, that do support dynamically varying properties like battery level, could provide such values, of course. Hence, it's important for the property to be in the ontology. Best wishes Rhys P.S The updated ontology files are also accessible from [5] and there is a code refresh at [6] [1] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-05- 31/DCOntology.html [2] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-03- 31/DCOntology-20070331.html <http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-03 -31/DCOntology.html> [3] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-05- 31/DCOntology.html#PixelCount [4] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-05- 31/DCOntology.html#Battery [5] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/2007-05- 31/ [6] http://www.w3.org/2007/uwa/editors-drafts/DeliveryContextOntology/Code/DCO ntology-2007-05-04.zip
Received on Friday, 4 May 2007 07:56:24 UTC