Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 1
Best Practice 1
2 3
4 5
6 7 8
9 10 11
12 13
14 15 16
17 18 19 20 21 22 23 24 25 26
27 28
Subject: High-Level Architectural Model for DDI Applications (2009-02-22)
Document identifier: DDIBestPractices_HighLevelArchitectureForApps.doc.PDF
Location: http://www.ddialliance.org/bp/DDIBestPractices_HighLevelArchitectureForApps.doc.PDF
Authors: Karl Dinkelmann, Pascal Heus, Chuck Humphrey, Jeremy Iverson, Jannik Jensen, Sigbjørn Revheim, Joachim Wackerow
Editors: Jeremy Iverson
Intended audience: This document is for software designers who are developing DDI applications. The designers may be familiar or unfamiliar with the DDI specification.
Abstract: This best practices document looks at a possible way to design components that can be combined to create DDI applications. Given that object-oriented design is the most common programming paradigm, and that systems are often based around service-oriented principles, and given the modular design of DDI 3.0 itself, this document provides an architectural model that can be a reference point for implementers. The document also takes into consideration issues of maintenance and management of DDI applications, and discusses best practices for application documentation and configuration. The focus is on interoperability of DDI applications.
Status: This document is updated periodically on no particular schedule. Send comments to editor: [email protected] 29
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 2
Table of Contents 30
31
32
33
34
35
36
37
38
39
40
41
42
43
1 INTRODUCTION.................................................................................................... 3
1.1 Problem statement .................................................................................................................. 3
1.2 Terminology ............................................................................................................................. 3
2 BEST PRACTICE SOLUTION ........................................................................... 3
2.1 Definitions ................................................................................................................................ 3
2.2 Best Practice behavior............................................................................................................ 4
2.3 Discussion ............................................................................................................................. 11
2.4 Examples................................................................................................................................ 11
3 REFERENCES ................................................................................................. 14
3.1 Normative ............................................................................................................................... 14
APPENDIX A. ACKNOWLEDGMENTS ................................................................. 15
APPENDIX B. REVISION HISTORY ...................................................................... 17
APPENDIX C. LEGAL NOTICES ........................................................................... 18
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 3
44
45 46 47 48 49
51 52 53
55 56 57
60 61
62
63
64
65 66
67 68 69
70 71
72 73
1 Introduction This best practices document looks at a possible way to design components that can be combined to create DDI applications. The paper is targeted at developers, but it does not assume a high level of DDI knowledge. It is intended to serve as a starting point for developers new to the DDI.
1.1 Problem statement 50 Software developers who are new to the DDI 3.0 standard may find the standard daunting. This best practices document provides an overview of how an application may be structured so that developers have a starting point for the design of their application.
1.2 Terminology 54 The key words must, must not, required, shall, shall not, should, should not, recommended, may, and optional in this document are to be interpreted as described in [RFC2119]. Additional DDI standard terminology and definitions are found in http://www.ddialliance.org/definitions/.
2 Best Practice Solution 58
2.1 Definitions 59 DDI: When used without a version, DDI refers to the latest DDI specification, currently version 3.0. When older versions are referenced, the version number will be explicitly specified.
DDI community: Any person or organization working with the DDI specification.
DDI application: A software application that reads and/or writes DDI XML.
Specification: The DDI specification.
Component: A piece of software with a specific purpose with a well-defined input and well-defined output.
Middleware: In the context of this best practices paper, middleware refers to utilities that manage the interface between the DDI metadata model and application services or high-level end-user tools.
Task: An activity that a person undertakes in order to create, edit, or view documentation about data.
End user: Person performing work in the data life cycle for whom DDI metadata is required. The end user will likely not even be aware of the DDI metadata in the application he or she is using.
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 4
Java: Java is a programming language expressly designed for use in the distributed environment of the Internet. It was designed to have the "look and feel" of the
74 C++ language,
but it is simpler to use than C++ and enforces an 75
object-oriented programming model. 76
Eclipse: Eclipse is an ongoing project in support of an open source integrated development environment (
77 IDE). Eclipse provides a framework and a basic platform (called the Eclipse
Platform) that allows a company to build an integrated development environment from 78
plug-in software components provided by Eclipse members.
79 80
81 GNU-LGPL: The GNU Lesser General Public License (formerly the GNU Library General Public License) is a free software license published by the Free Software Foundation. 82
Unicode: Unicode is a computing industry standard allowing computers to consistently represent and manipulate
83 text expressed in most of the world's writing systems. 84
85
86 87
GUI: A GUI is a graphical (rather than purely textual) user interface to a computer.
API: An API (or Application Programming Interface) is a language and message format used by an application program to communicate with the operating system or some other control program such as a database management system (DBMS) or communications protocol. APIs are implemented by writing function calls in the program, which provide the linkage to the required subroutine for execution.
88 89 90
91 92
Internationalization: Internationalization is the process of planning and implementing products and services so that they can easily be adapted to specific local languages and cultures, a process called localization. 93
94 95 96
97 98 99
100 101 102
104 105 106 107 108 109
DDI instance: A DDI Instance is the top-level wrapper for any DDI document. It may contain a set of top-level elements, which generally correspond to the modular breakdown within DDI. Every DDI Instance will use this wrapper, regardless of its content.
Resource package: A resource package is a means of packaging any maintainable set of DDI metadata for referencing as part of a study unit or group. A resource package structures materials for publication that are intended to be reused by multiple studies, projects, or communities of users. A resource package uses the group module with an alternative top-level element called Resource Package that is used to describe maintainable modules or schemes that may be used by multiple study units outside of a group structure.
2.2 Best Practice behavior 103 Given that object-oriented design is the most common programming paradigm, and that systems are often based around service-oriented principles, and given the modular design of DDI itself, it makes sense to have a reference model for the componentization of functions within DDI-based systems. This document provides an overview of the component architecture that DDI applications may use. Additionally, it discusses resources available to developers creating DDI applications, as well as general software application development best practices.
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 5
110
111 112 113
114
115 116 117
118 119 120 121
DDI Profiles
DDI applications will inevitably support only a portion of the DDI specification. Applications should describe which portions of the standard they implement. This can be described using DDI profiles. See the Creating a DDI Profile Best Practice document for details.
DDI Application Components
This best practice defines a standard architectural model to be used as a reference point for implementers. This section describes several of the tiers and components that may be used in creating a DDI application.
Applications should be designed in such a way that each component has a single, stand-alone purpose. Components should avoid overlapping functionality. Depending on the development paradigm being used, components may take the form of assemblies, classes, methods, or other programming constructs.
122
123 Figure 1: Sample Component Model
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 6
124 125 126
127 128 129
130 131 132 133 134 135
136 137 138
139 140 141
142 143 144
145 146
147 148 149
150 151 152 153
154 155 156 157
Components may be created as needed by application developers. In some cases, it may be possible to use existing third-party components. For more information on possible sources of DDI-related components, see the DDI Application Development Resources section below.
Components that allow users to generate DDI should ideally implement the area of the specification completely so the end user can rely exclusively on the tool for that aspect of metadata management.
High-level components High level components are considered the software front-ends with which users interact. These could be rich desktop applications, Web applications, or command-line tools. These could include utilities with a single purpose such as extracting metadata from an existing file and storing it in DDI format, full-featured metadata creation and editing suites, or anything in between.
It should be clear to end users which stage of the data life cycle a tool addresses. The purpose of the tool will imply what sorts of things can be used as input, and what sorts of things will be output.
These applications should not necessarily mirror the DDI model, but should provide the user with a highly usable interface for working with the metadata. See the DDI Identifier Best Practices document for more information.
Application services Application services components are application services called by the high-level components. These could be in the form of Web services.
Examples include repositories based on DDI schemes such as question banks or concept banks.
DDI transmitted from or to application services may be held in resource packages. The DDI should be wrapped in a DDI instance element, even if only a small snippet of DDI is included. See DDI User Guide Part II, line 2215 for details.
Middleware components Middleware components are utilities that manage the interface between the DDI metadata model and application services or high-level end-user tools. Some examples of middleware components are described here.
Identifier Generation DDI requires specialized forms of identifiers. Application developers will need to create a component to create these identifiers. See the DDI Identifer Best Practices document for details [see References section].
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 7
158 159 160 161 162 163
164 165 166 167 168
169 170 171 172 173 174
175 176 177 178 179 180
181 182 183
184 185 186 187
188 189 190
191
192
URN Resolution In DDI, URN identifiers may be resolved to locate resources within a DDI instance. The DDI instance holding the identified resource could be held internally or externally to the current DDI instance. Application developers will want to create or use a specialized component to provide this URN resolution functionality. See the DDI URN Resolution Best Practices document for details [see References section].
DDI Validation In order to be valid, DDI instances generated by application components must validate against the DDI specification schema. Instances must also validate against second-level validation tools as described in the Interoperability with Other DDI Applications section below. Developers will want to use a component that provides this validation functionality.
DDI Manager A DDI Manager component allows developers to work with the underlying metadata model in a convenient manner. It provides access to metadata that are required for a specific task. It may provide access to the elements actually used by other components, instead of all DDI elements. It can also provide easy ways of retrieving desired elements by providing methods for searching and filtering.
Group Manager The DDI grouping mechanism allows the definition and redefinition of hierarchical relationships among objects. See DDI Overview Part I, line 1819 for details.An application may provide grouping functionality such as editing, regrouping, and extracting. This functionality will require a component that allows items to be put into groups, as well as for existing group structures to be edited.
Low-level components Low level components are the software libraries on top of which middleware and high-level components are implemented. Several examples follow, but this list is by no means exhaustive.
Metadata/DDI Model All DDI applications require a model of the data with which they work. The model allows developers to query, add, update, and remove metadata. Depending on the scope of the application, the model may represent the full DDI specification, or a subset of the specification.
DDI Serialization All DDI applications must be able to read and/or write valid DDI XML. A serialization component provides one or both of the following functions:
• Read and parse valid DDI XML and load the data into the application’s DDI model
• Write the application’s DDI model to an XML file
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 8
193 194 195
196 197
198
199 200 201
202 203 204
205 206 207 208 209
210 211 212 213
214
215 216 217 218 219 220 221
222 223 224 225 226
227
The DDI XML created by an export component must be a complete DDI instance. See the Interoperability with Other DDI Applications section below for details about ensuring interoperability among DDI applications.
Import/Export Components DDI applications may wish to read from and write to file formats other than DDI.
Interoperability with Other DDI Applications
DDI applications must interoperate well with other DDI applications written by the DDI community. A DDI application must have output that other DDI applications are able to use, and must be able to take as input DDI generated by other applications.
DDI XML must be wrapped in a DDI instance element. This applies whether the DDI is loaded from a file or retrieved from an application service. The documentation for this element can be found in the DDI User Guide Part II, line 269.
DDI instances must validate against the schema published as the standard. DDI instances should also validate against second-level validation tools like the reference validator available from the DDI Foundation Tools web site (http://tools.ddialliance.org/?lvl1=library) . Identifiers and URNs used in the DDI instance should conform to the best practices described in the DDI Identifier Best Practices document and the DDI URN Resolution Best Practices paper.
XML allows namespace prefix declarations to be used flexibly. Developers should write DDI to use namespace prefix conventions as they are published in the DDI specification. See DDI User Guide Part II, line 208 for more information. Applications should be able to read DDI documents even if an instance does not use the conventional prefixes.
DDI Application Development Resources
DDI foundation tools program The DDI Foundation Tools Program (DDI-FTP) is an initiative aimed at the development of a Foundation Framework and a Toolkit to support the implementation of DDI applications and utilities. The DDI-FTP implements several of the components described above. The components are mainly available under the open source GNU-LGPL, so developers of both open source and proprietary applications can make use of them. The tools are mainly written in Java. The user interface portions are mainly based on the Eclipse platform.
Application/component catalog DDI application developers may submit information regarding their development efforts to the DDI Alliance. The DDI Alliance will publish the details of the application or component in a directory. This will allow developers to get exposure for their software, and may help to foster collaboration among developers.
A component listing consists of the following:
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 9
228
229
230
231
232
233
234 235 236 237
238 239 240 241 242 243
244 245 246
247 248 249 250
251 252
253 254
255 256 257
258
• Title
• Developer
• Description
• License
• Screenshots (if appropriate)
DDI Development Pitfalls
Link integrity Developers should be sure elements being linked to exist in the document. When an object is deleted, links to that object should be removed. If an object identifier is renamed, links to that object should be updated.
DDI namespace URNs DDI namespace URNs contain the version number of the schema (e.g., “ddi:instance:3_0”). This number will change when new DDI XML schema versions are released (e.g., “ddi:instance:3_01”). This could present issues for DDI parsers that expect certain namespace URNs. DDI components should be careful to work with potential future version numbers, for example, by not depending on explicit namespace URNs.
Avoid circular references DDI applications should not create circular reference patterns, and should detect circular reference patterns in order to avoid abnormal program behavior.
Loss of metadata When importing metadata from a DDI file, all metadata should be preserved so that everything in the original DDI instance is reflected in a new version. Identifiers from imported DDI should be preserved.
If an application manages data that cannot be stored in DDI format, it should warn the user that those metadata are not supported when exporting to DDI format.
If an application reads a DDI file that contains metadata that the application will not preserve or manage, it should warn the user that the metadata will be lost.
Be aware of encoding Make sure the characters being saved in an XML instance are a valid part of the encoding being used. Use an encoding that supports the characters. Work with Unicode (generally UTF-8).
General Software Development Recommendations
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 10
259 260 261
262 263 264 265
266 267 268
269 270 271 272 273
274 275 276 277
278 279
280 281 282 283
284 285 286 287
288 289 290 291 292 293
This section describes some general software application development best practices. DDI application developers should follow these guidelines in order to provide the best user experience.
Documentation DDI applications should include effective end-user documentation so researchers can use the application productively. Several types of help should be available to meet the needs of different types of users.
Tutorials A Tutorials section may contain a series of “how to” articles describing how to perform common tasks. This is useful to users who are new to an application or who only use it occasionally.
Reference A Reference section contains detailed descriptions of each part of the software. Each form and user interface element of a GUI may be described, along with screenshots where appropriate. This is useful for those who use an application frequently and need quick access to reference information.
Technical Reference A Technical Reference section provides information for system administrators, programmers, and other technical users. It can include information about installation, file formats, and software developer’s kits.
For developers providing their source code or an API, thorough code documentation should be provided. This could be derived from JavaDoc or similar documentation systems.
Knowledge Base A Web-based Knowledge Base allows developers to deliver up-to-date information to end users. A knowledge base should contain searchable and well-categorized information related to the software. Articles can be added to the knowledge base based on user feedback.
Internationalization DDI applications should be written with globalization in mind. This will enabled localized versions of applications to be created, increasing the audience for the tool. Applications should support Unicode text encoding.
Logging DDI applications should write logs with enough detail so that end users can submit the logs to developers in the event of unanticipated behavior, and the logs will provide sufficient information to the developers to diagnose any issues with the software. Users should be able to adjust the level of logging (for example, Debug, Info, Warn, Error). Developers may wish to use existing logging libraries such as log4j or log4net.
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 11
294 295
296 297
298 299 300
301 302 303
304 305 306 307
309 310 311
312 313 314 315
316 317 318
320
321 322
Keep in mind that this log data may be useful metadata usable at different stages of the life cycle. Log file formats should be documented.
Performance DDI applications should operate responsively and should not overuse a system’s resources.
Configuration DDI applications should provide a reasonable level of end-user customization. Commonly used configuration systems should be used, for example, Java properties files.
Platform independence Ideally, DDI applications should be written in a platform-independent manner so they may run on Windows, Mac OSX, Linux, and other operating systems.
Intellectual property issues of third-party components Developers should be aware of licensing implications of any third-party components they use. Third-party licenses should not be more restrictive than the desired license of the developer’s application.
2.3 Discussion 308 The paradigm used in this document for structuring the identified components is based on an object-oriented, tiered approach. Developers who do not use this approach should still be able to gain insight from the description of the functionality identified in this document.
These best practices provide the foundation for implementing feature-rich, interoperable DDI applications. They do not address every aspect of the DDI specification. Applications that wish to provide certain functionality (e.g., geographical metadata management or a statistical engine) will need components to provide those features.
The DDI Alliance is committed to digital preservation, which may require applications to incorporate additional preservation standards (e.g., PREMIS, http://www.oclc.org/research/projects/pmwg/).
2.4 Examples 319
Applying Architectural Components to Data Life Cycle Application
This section contains several examples of how a developer might apply the architectural components to create specific applications for the data life cycle.
Data Documentation Initiative
323
324
325 326 327 328 329 330
331
332
333
334
335
336
337
338
339
340
341
342
Figure 2: From the DDI User Guide Part I Page 6
Data collection example A sample application that addresses the data collection stage of the data life cycle would be a survey instrument documentation application. Such an application might read source code from a Computer Assisted Interviewing system, populate a metadata model, generate documentation, and store a representation of an instrument in DDI format. The application may submit questions to an online question repository.
In order to create this application, the developer may make use of the following components.
• Low level
o DDI/Metadata model
o Serialization
o Import and export
• Middleware
o ID generation
o Validation
• Application services
o Question bank Web service
• High level
o Graphical user interface
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 12
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 13
343
344 345 346 347
348
349
350
351 352
353
354
355
356
357
358
359
360 361
362 363 364 365 366 367
368 369 370
o Questionnaire visualization component
Data discovery and data analysis example A Web application allows researchers to browse metadata to discover data suitable for their work. The application might dynamically produce descriptive statistics based on various physical data product formats, and allow users to generate custom datasets.
• Low level
o Metadata model
o Serialization for reading DDI
o Exporters for generating custom datasets (which could be used by the statistical engine)
• Middleware
o DDI Manager to access underlying metadata model.
• Application services
o Variable bank
o Statistical engine
• High level
o Web pages to display study metadata and allow the user to navigate through it
o Dynamic Web pages to display variables selected by the user (data visualizations), let the user select descriptive statistics, and display results
Integrating components across the data life cycle DDI allows applications that address different stages of the data life cycle to work together. An example application could allow researchers to discover data based on questions found in survey instrument documentation, and then proceed to extract the relevant data and perform analysis on it. This process can be done using the two previously described applications if they both follow interoperability best practices.
Publicizing applications Developers who want information about the application or component to be available to the DDI community should submit an entry to the DDI application/component catalog. The catalog can be found at the DDI Foundation Tools site -- http://tools.ddialliance.org/. The application should contain a DDI Profile that describes which parts of the DDI specification it uses.
371 372
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 14
3 References 373 DDI User Guide Part I (http://www.ddialliance.org/ddi3/index.html) 374
DDI User Guide Part II (http://www.ddialliance.org/ddi3/index.html) 375
DDI Tools Foundation Web site (http://tools.ddialliance.org/) 376
DDI Tools Foundation Roadmap (http://tools.ddialliance.org/?lvl1=ftp&lvl2=roadmap) 377
378 DDI Profile Best Practices: http://www.ddialliance.org/bp/DDIBestPractices_CreatingAProfile.doc.PDF 379
380 DDI Identifiers Best Practices: http://www.ddialliance.org/bp/ManagementOfDDI3Identifiers.doc.PDF 381
382 DDI URN Resolution Best Practices: http://www.ddialliance.org/bp/URNsAndEntityResolution.doc.PDF 383
385
386 387
388 389
3.1 Normative 384
[RFC2119] S. Bradner, Key words for use in RFCs to Indicate Requirement Levels, http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997.
OASIS, Best Practice, http://www.oasis-open.org/committees/uddi-spec/doc/bp/uddi-spec-tc-bp-template.doc, 2003
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 15
390
12
393
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
Appendix A. Acknowledgments 39 The following individuals were members of the DDI Expert Workshop held 10-14 November 39
2008 at Schloss Dagstuhl, Leibniz Center for Informatics, in Wadern, Germany.
Nikos Askitas, Institute for the Study of Labor (IZA) 39
Karl Dinkelmann, University of Michigan 39
Michelle Edwards, University of Guelph 39
Janet Eisenhauer, University of Wisconsin 39
Jane Fry, Carleton University 39
Peter Granda, Inter-university Consortium for Political and Social Research (ICPSR) 39
Arofan Gregory, Open Data Foundation 40
Rob Grim, Tilburg University 40
Pascal Heus, Open Data Foundation 40
Maarten Hoogerwerf, Data Archiving and Networked Services (DANS) 40
Chuck Humphrey, University of Alberta 40
Jeremy Iverson, Algenta Technology 40
Jannik Vestergaard Jensen, Danish Data Archive (DDA) 40
Kirstine Kolsrud, Norwegian Social Science Data Services (NSD) 40
Stefan Kramer, Yale University 40
Jenny Linnerud, Statistics Norway 40
Hans Jørgen Marker, Danish Data Archive (DDA) 41
Ken Miller, United Kingdom Data Archive (UKDA) 41
Meinhard Moschner, GESIS - Leibniz Institute for the Social Sciences 41
Ron Nakao, Stanford University 41
Sigbjørn Revheim, Norwegian Social Science Data Services (NSD) 41
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 16
5
6
417
418
Wendy Thomas, University of Minnesota 41
Mary Vardigan, Inter-university Consortium for Political and Social Research (ICPSR) 41
Joachim Wackerow, GESIS - Leibniz Institute for the Social Sciences
Wolfgang Zenk-Möltgen, GESIS - Leibniz Institute for the Social Sciences
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 17
9420
Appendix B. Revision History 41
Rev Date By Whom What 0.1 10 Nov 2008 Jeremy Iverson Initial draft 0.9 2009-02-15 Stefan Kramer Changed sections above ToC to heading
3, rebuilt ToC for heading levels 1-2 only. Added rev. date to Subject. Added future URLs for DDI BPs to References section.
421
Data Documentation Initiative
DDIBestPractices_HighLevelArchitectureForApps.doc.PDF Copyright © DDI Alliance 2009. All Rights Reserved. Page 18
422
3424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465
Appendix C. Legal Notices 42 Copyright © DDI Alliance 2009, All Rights Reserved http://www.ddialliance.org/ Content of this document is licensed under a Creative Commons License: Attribution-Noncommercial-Share Alike 3.0 United States This is a human-readable summary of the Legal Code (the full license). http://creativecommons.org/licenses/by-nc-sa/3.0/us/ You are free:
• to Share - to copy, distribute, display, and perform the work • to Remix - to make derivative works
Under the following conditions:
• Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
• Noncommercial. You may not use this work for commercial purposes. • Share Alike. If you alter, transform, or build upon this work, you may distribute the
resulting work only under the same or similar license to this one. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this Web page.
• Any of the above conditions can be waived if you get permission from the copyright holder.
• Apart from the remix rights granted under this license, nothing in this license impairs or restricts the author's moral rights.
Disclaimer The Commons Deed is not a license. It is simply a handy reference for understanding the Legal Code (the full license) — it is a human-readable expression of some of its key terms. Think of it as the user-friendly interface to the Legal Code beneath. This Deed itself has no legal value, and its contents do not appear in the actual license. Creative Commons is not a law firm and does not provide legal services. Distributing of, displaying of, or linking to this Commons Deed does not create an attorney-client relationship. Your fair use and other rights are in no way affected by the above. Legal Code: http://creativecommons.org/licenses/by-nc-sa/3.0/us/legalcode