OpenDDR is the ultimate open solution to the device fragmentation issues. Because of the wide
diversity of devices available on the market, the developers dealing with web content optimization
need to know hardware and software specs of each device. To face this situation the most effective
solution is using a Device Description Repository, a database storing a huge amount of information
concerning mobile phones, tablets, Interactive TVs, set top boxes and any device with a Web browser.
14. Need different Approach: OpenDDR Project Titolo presentazione - data What is a DDR Project Brief
15.
16.
17. Adopting a W3C standard, the Copyright of the interfaces you need is owned and protected by W3C against any intellectual property and patent claim OpenDDR is released under Open Database License (ODbL), and OpenDDR Simple APIs are released under Lesser General Public License (LGPL). This means that you are completely free to use both OpenDDR repository and/or APIs in open source or proprietary software Titolo presentazione - data Why open standards? Project Brief
18.
19.
20.
21.
22.
23.
24. API license : dual licensing AGPL and commercial (Changed since August 2011) Titolo presentazione - data DDR Projects Comparison Project Brief
25.
26. OpenDDR identifies a device, a web browser or an operating system with a certain Confidence . You can specify the threshold as a target to achieve in the identification process. More high is the confidence more slow is the process; more low is the confidence more fast is the process, even if you can have less accurate results.
27. OpenDDR supports Patching of the data source Titolo presentazione - data What's different in OpenDDR? Project Brief
28. We have uploaded OpenDDR source code and resources at: http://code.google.com/p/openddr/ We have also created a discussion group related to OpenDDR project: http://groups.google.com/group/openddr We adopt a subversion repository. In the trunk directory you find the source java code of the OpenDDR API in the src folder. In the directory resources you can find the DDRs, the vocabularies, and the BuilderDatasource: a document used in the process of device identification Titolo presentazione - data The repository Google Code and Group
29. OpenDDR implements the W3C Simple API interface. It supports the core vocabulary as specified in the DDR W3C recommendation document. To use the OpenDDR Simple API you need to configure a property file as the follow: oddr.ua.device.builder.path=PATH_TO_FILE/BuidlerDataSource.xml oddr.ua.device.datasource.path=PATH_TO_FILE/DeviceDataSource.xml oddr.ua.device.builder.patch.paths=PATH_TO_FILE/BuilderDataSourcePatch.xml oddr.ua.device.datasource.patch.paths=PATH_TO_FILE/DeviceDataSourcePatch.xml oddr.ua.browser.datasource.path=PATH_TO_FILE/BrowserDataSource.xml ddr.vocabulary.core.path=PATH_TO_FILE/coreVocabulary.xml oddr.vocabulary.path=PATH_TO_FILE/oddrVocabulary.xml oddr.limited.vocabulary.path=PATH_TO_FILE/oddrLimitedVocabulary.xml oddr.vocabulary.device=http://www.openddr.org/oddr-vocabulary oddr.threshold=70 The oddr.threshold property allows the developer to specify what is the desired confidence to achieve the identification. In this case we want a confidence of, at least, 70%. Titolo presentazione - data Implementation Implementation and Sample
30. To create the identification service we use the ServiceFactory in the W3C DDR-Simple-API.jar Service identificationService = ServiceFactory.newService("org.openddr.simpleapi.oddr.ODDRService", ODDR_VOCABULARY_IRI, initializationProperties); The first argument is the class of the DDRService; the second argument is the default vocabulary used in the identification if the vocabulary is not specified; the third argument is the Open DDR properties file. The following is an example of the code to get “ displayWidth ”, “model” and “vendor” properties of the default vocabulary and the default aspect (as specified in vocabulary). PropertyRef displayWidthRef; PropertyRef vendorRef; PropertyRef modelRef; Try { displayWidthRef = identificationService.newPropertyRef("displayWidth"); vendorRef = identificationService.newPropertyRef("vendor"); modelRef = identificationService.newPropertyRef("model"); } catch (NameException ex) { throw new RuntimeException(ex); } PropertyRef[] propertyRefs = new PropertyRef[] {displayWidth, vendorRef, modelRef}; Evidence e = new ODDRHTTPEvidence(); e.put("User-Agent", request.getHeader("User-Agent")); try { PropertyValues propertyValues = identificationService.getPropertyValues(e, propertyRefs); PropertyValue displayWidth = propertyValues.getValue(displayWidthRef); PropertyValue vendor = propertyValues.getValue(vendorRef); PropertyValue model = propertyValues.getValue(modelRef); if (displayWidth.exist() && vendor.exists() && model.exists()) { ... } } catch (Exception ex) { throw new RuntimeException(ex); } Titolo presentazione - data Implementation Implementation and Sample
31.
32.
33. With a limited vocabulary We used jMeter a s workload generator, configuring it in order to generate 100 requests per seconds from 10 worker with a different user agent. The user agents set contained ten of the most used user agent observed in a real environment. Both OpenDDR and WURFL API was tested in a simple web app. Titolo presentazione - data Introduction to test result Test Result (1)
34. Results for WURFL Titolo presentazione - data WURFL Memory load Test Result (2)
35. Results for not reduced OpenDDR Titolo presentazione - data no reduced OpenDDR Memory load Test Result (3)
36. Results for reduced OpenDDR Titolo presentazione - data Reduced OpenDDR Memory load Test Result (4)
37.
38. The memory load of OpenDDR with limited vocabulary is only of 50MB and, after the initialization, OpenDDR doesn't have memory spike.
39. Both APIs identified correctly all the user agents in the HTTP request Titolo presentazione - data Result Test Result (5)
40.
41. The developer can choose which properties must be loaded in memory, specifying a limited vocabulary: no memory waste .
42. Patch support : if you want to change or update your repository you can do that. It is simple to add new properties updating your DDR and your vocabulary. Titolo presentazione - data Why OpenDDR? Benefits