Using Roles and Business Objects to Model and Understand Business Processes Business process modeling focus on describing how activities interact with other business objects while sustaining the organization 's strategy . Business objects are object-oriented representations of organizational concepts , such as resources and actors , which collaborate with one another in order to achieve business goals . These objects exhibit different behavior according to each specific collaboration context . This means the perception of a business object depends on its collaborations with other objects . Business process modeling techniques do not clearly separate the multiple collaborative aspects of a business object from its internal aspects , making it difficult to understand objects which are used in different contexts , thus hindering reuse . To cope with such issues , this paper proposes using role modeling as a separation of concerns mechanism to increase the understandability and reusability of business process models . The approach divides a business process model into a business object model and a role model . The business object models deals with specifying the structure and intrinsic behavior of business objects while the role model specifies its collaborative aspects . D. 2.9 -LSB- Management -RSB- : Software Process Models D. 2.10 -LSB- Design -RSB- : Methodologies H. 1.0 -LSB- Models and Principles -RSB- : General Representing and keeping the alignment between the multiple elements of an organization is fundamental to understand how it operates and how it can be adapted to cope with a changing business environment -LSB- 5 -RSB- . This requires understanding how business activities interact and are aligned with other organizational elements while supporting the operation of the business . In the past years , significant work , particularly in the area of business process modeling has been proposed , ranging from general modeling concepts to business automation languages -LSB- 10 , 16 , 17 , 18 -RSB- . Business process modeling can be used for multiple purposes , such as facilitating human understanding and communication -LSB- 29 -RSB- , supporting process improvement and re-engineering through business process analysis and simulation -LSB- 8 , 17 -RSB- and automating the execution of business processes -LSB- 1 , 22 -RSB- . A business process model captures the relationships that are meaningful to the business between different organizational concepts , such as activities , the resources used by activities and the human or automated actors who perform these activities . Identifying the properties and relationships of these concepts is fundamental to help understanding and evolving the business since it facilitates the communication between stakeholders , business specialists and support system specialists . We model business concepts as classes of business objects in a consistent object-oriented glossary of business concepts from where objects can be composed , specialized and reused . However , fully characterizing the type of a business object , its properties and relationships is not straightforward . This results from a business object generally being used in different contexts and relating to several other business objects in the organization . For example , a business object modeling a Product may be brought into play in several processes , such as Manufacturing , Logistics and Selling . In each of these contexts , it relates with different activities and resources , displaying different and possibly overlapping properties and behavior that are context-dependent . This means the object acts as a multi-dimensional concept . If business objects are modeled as one-dimensional concepts , i.e. without its properties and behavior being described as dependent on the context , then the objects will not have explicit information on how to guide the design of a business support system that is able to cope with evolution . For example , if the Manufacturing process changes , there may be changes to the Product object . However , if the Product object does not explicitly represent the aspects related to its manufacture , then there will be no information on the properties requiring modifications . This paper focus on describing on how to break up the universe of process modeling and its business objects into different aspects or areas of concern , of which each can then be handled independ-ently and later composed to synthesize a complete model . To do so , we propose defining two complementary conceptual models , a role model and a business object model . The role model describes business object collaborations and the properties of business objects that are concerned with each role , being each role a type on its own . The business object model describes the structure and the properties of a business object that are independent of a specific context . The relationships between business objects are specified Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page . To copy otherwise , or republish , to post on servers or to redistribute to lists , requires prior specific permission and/or a fee . SAC ' 05 , March 13 17 , 2005 , Santa Fe , NM , USA . Copyright 2005 ACM 1-58113-964-0 / 05/0003 ... $ 5.00 . 1308 2005 ACM Symposium on Applied Computing by roles the objects play while collaborating . We argue that using roles and business objects to model business processes improves the understandability of the individual business objects and of the process model . It also improves model reengineering since it promotes reuse and makes explicit the dependencies between the model elements . The remainder of this paper is structured as follows : next section reviews some of the research on business process modeling . Section 3 reviews role modeling , describes how roles can be identified and defines the concepts of business objects and role . Section 4 presents how the business object and the role model can describe a business process , followed by an example of application in section 5 . Finally , section 6 sets out the conclusions and future work . The Workflow Reference Model -LSB- 31 -RSB- defines a business process as a set of one or more connected activities , which collectively realize a business objective or policy goal , normally within the context of an organizational structure defining functional responsibilities and relationships . This definition extends the definition proposed by Davenport and Short -LSB- 7 -RSB- stating that a business process is a set of logically related tasks performed to achieve a defined business outcome . Most approaches to business process modeling concentrate on some sort of process map or diagram , which shows how activities are scheduled in the course of a business process . Indeed , there is little disagreement about the key elements process diagrams . There are usually ways to represent decision points and to express various activity coordination patterns , such as sequential flow , branching and parallel execution . Some techniques introduce swim-lanes to indicate the responsibilities of participants , such as departments or individuals . This allows representing the activities performed by actors in the context of a process . Two representative coordination-oriented business process modeling techniques that make use of actors , activities and swim-lanes are Role Interaction Networks -LSB- 24 -RSB- and Role Activity Diagrams -LSB- 21 -RSB- . Role Activity Diagrams provide the means to identify roles and interactions . Roles organize a process ' activities into sets of operations associated with a given participant in the process . Interactions show the dependencies between those participants . While this approach improves the understandability of a process model since it depicts what a participant does in a process , it falls short to explain the behavior of the business objects in a specific context of interaction . Additionally , roles are defined as groups of activities and not as types , so they can not be explicitly composed or specialized . Business process modeling is not limited to process diagrams . The focus of this paper is not on process diagrams but on describing the roles that are used to specify the responsibilities of business objects . A business object is the model of a concept in the business universe of discourse . It plays roles in a business process by means of participating in different activities . Business objects participate in different business processes in different contexts , thus playing multiple roles . It is important to note that process diagrams do not fully describe the business object structure and relationships , and do not emphasize why activities are performed or roles are enacted . Besides , they only identify actor roles , i.e. the roles of the performer of an activity . This means , for example , that the properties of a resource that is used by multiple activities are not separated according to its usage context . The next section introduces the fundamental concepts behind role theory and role modeling . In the late 1920s , role theory started to generated interest among social scientists from many backgrounds , such as psychology and sociology . Its central concern has been with patterns of human conduct , context and social structure as well as with individual response . The motivation for roles is to allow particular viewpoints regarding the factors presumed to be influential in governing behavior . It lies on a theatrical analogy of actors playing parts or roles in a play . As Biddle and Thomas -LSB- 4 -RSB- have stated : `` When actors portray a character in a play , their performance is determined by the script , the director 's instructions , the performances of fellow actors , and reactions of the audience as well as by the acting talents of the players . Apart from differences between actors in the interpretation of their parts , the performance of each actor is pro-grammed by all of these external factors ; consequently , there are significant similarities in the performances of actors taking the same part , no matter who the actual actors are . '' There are many complementary definitions for the concept of role but still there is no consensus on the properties to represent it . In the late 1970s , sociological role theorists defined a role as `` a comprehensive pattern for behavior and attitude '' -LSB- 26 -RSB- or as `` be-havioral repertoire characteristic of a person or a position '' -LSB- 3 -RSB- . Nonetheless , the concept of role is used in computer science and software engineering as a modeling technique that deals with separation of concerns , i.e. the separation of the behavioral repertoire characteristics of some concept . It is used in methodologies such as RM-ODP -LSB- 14 -RSB- and in several object-oriented frameworks -LSB- 10 , 12 , 14 , 15 , 25 -RSB- . 3.1 Business Objects and Roles Modeling is an abstraction technique that consists of identifying concepts of interest in some universe of discourse and representing its essential features for a specific purpose in a model . In business modeling , the universe of discourse corresponds to what is per-ceived of an organization as being reality by business domain experts . Ontologies typically distinguish entities -LRB- nouns -RRB- from activities -LRB- verbs -RRB- . Entities are things that exist in the business , either concrete -LRB- e.g. a person -RRB- or abstract -LRB- e.g. an organization -RRB- . Activities are things that happen in the business . Activities make use of the business entities . We model both of these concepts as business objects . A business object is then the super type of all objects that represent business concepts with a well-defined boundary and identity . It encapsulates the definition , attributes , behavior and relationships to other business objects -LSB- 20 -RSB- . The state of a business object is characterized by the values of its attributes . The behavior is given by the actions that the business object is capable of performing to fulfill its purpose , including changing its intrinsic attributes and collaborating with other business objects . Business objects have intrinsic and extrinsic features . Intrinsic features describe it in isolation , while extrinsic features arise from the relationships or collaborations with other business objects . For example , a Person has intrinsic features such as Age and Sex , and extrinsic features such as Job Position and Salary , which derive from a transitory relationship between the Person and some Organization or Company . Intrinsic features may change over time -LRB- e.g. Age -RRB- but always characterize the object . However , extrinsic features may become inappropriate -LRB- e.g. the Job Position property is not relevant when characterizing an unemployed person -RRB- . One way to separate the intrinsic features from the extrinsic features of an object is by means of roles -LSB- 4 , 15 , 23 -RSB- . Roles , as a modeling construct , aim at separating the concerns that arise from 1309 business object collaborations . We define a role as the observable behavioral of a business object defined in a specific collaboration context . Thus , a role represents the extrinsic features of a business object when it collaborates with other business objects . 3.2 Identifying Roles To distinguish roles from entities , Guarino et al. proposed two criteria -LSB- 11 -RSB- . A role is a type that -LRB- 1 -RRB- is founded and -LRB- 2 -RRB- lacks semantic rigidity . Something is founded if it is defined in terms of relationships with other things in a given context . For instance , the concept of Reader is founded since for a Person to be a Reader there must be something being read . Conversely , a Person is not founded for the reason that its intrinsic properties are defined on their own regardless of the collaborations with other things . Something is semantically rigid if its identity directly depends on being kind of some class . A Book is semantically rigid since its identity is still that of a Book regardless someone is reading it or not . In contrast , Reader is not rigid because an entity filling the role of Reader retains its identity outside the context of that role . For example , a Person is a Reader while reading a Book , but when it stops reading it , it is still a Person . Therefore , roles are founded , semantically non-rigid types while entities are non-founded , semantically rigid types . The proposed approach deals with decomposing the business process modeling universe into two complementary models , the business object model and the role model , and later binding these two models into an integrated specification of the business process . The business object model deals with the structure and intrinsic properties of business objects . Here , a process is modeled as a network of business objects . However , business objects relate to other business objects in specific contexts and are often used in more than one context , where they may play different roles . So , the roles for a business object only need to be included in its definition when the object acts in the collaboration contexts described by the roles . It is also impossible to forecast all of the possible roles of a business object . Thus , adding superfluous roles to the object impairs several design quality attributes such as understandability , maintainability and reusability . To deal with such a concern , roles and business objects should be dealt with separately and later bound together . The concept of role allows a system to be decomposed into a set of business objects capable of clearly separating core parts and collaboration-dependent parts and then to abstract and compose such objects . Consequently , a set of roles helps business objects to be defined to be more reusable and extensible . Roles may also be reused as an independent unit encapsulating specific collaborations . Roles are organized into role models , which deal with specifying the network of related roles required for a collaboration to happen . We propose defining and represented both of these models using the Unified Modeling Language -LSB- 19 -RSB- since its graphical syntax and semantics is well-know by software specialists and , although to a lesser scale , by business specialists . However , the standard UML does not have explicit constructs to represent the required business domain concepts . We make use of the UML extensibility package to define such concepts . The extensibility package specifies how UML model elements can be extended and customized with new graphical representations and new semantics by specifying stereotypes , tagged values and constraints . A coherent set of such extensions defined for a specific purpose makes up a UML profile -LSB- 2 , 19 -RSB- . The next subsections describe how the business object models and role models are represented . 4.1 The Business Object Model The business object model specifies the structure and intrinsic properties of business objects . Business objects are coordinated towards the achievement of goals that describe why actions occur . A business process describes how objects are coordinated . Figure 1 . Classes in the business object model profile . Figure 1 is a class diagram describing the UML stereotypes -LRB- classes in white -RRB- that are used in the business object model . A Business Object is a UML Class and it is specialized as a noun or verb by means of the Entity and Activity class stereotypes . Business object models are represented as UML class diagrams and the intrinsic behavior of its objects is represented using UML 's behavioral diagrams . Note that collaborations between business objects are not represented in this model but in the role model . The stereotypes within the business object model can be summa-rized as follows : Business Object : an abstraction of a concept of interest in the organization . It is a UML Class . Activity : a specialization of Business Object . It is a verb describing how a piece of work is performed . Activities are performed by Actors , and operate over Business Objects , especially those acting as Resources . Entity : a specialization of Business Object . It is a noun describing a concrete or abstract business concept . Resource : a specialization of Entity , which is the input or output of an Activity . It represents things such as materials or information . Actor : a specialization of Entity . It is someone -LRB- a human actor -RRB- or something -LRB- an automated actor , such as an information system or a production machine -RRB- that can perform the actions required by an Activity . Goal : a specialization of Entity that represents a measurable state that the organization intends to achieve . Goals are achieved by Business Objects , especially Activities . A business process is composed of Activities that use input Resources , such as materials or information , to produce output Resources . Nevertheless , the input of an Activity may be any other Business Object or a composition of Business Objects . For instance , changing or reengineering a business process is in itself a process . This process takes as input a business object model -LRB- i.e. a network of relationships between business objects -RRB- and produces a modified model . Therefore , the composed business object model is being used as a resource in this context . Activities are performed to achieve specific business Goals . Analyzing Goals and their relationships with the Activities produces an alignment measure between the processes and the organization 's operational strategy . The Activities of a business process are not 1310 autonomous in the sense they require one or more Actor or Business Support Systems to perform them . Actors represent people , systems -LRB- mechanical or computer based -RRB- or a combination of both . At a large scale , business processes are aggregated into value chains -LRB- which are also business processes -RRB- that produce a measurable value that is visible to external customers . Figure 2 . Example of activity composition and specialization . Business objects are classes conforming to a type . They can be specialized and composed just like ordinary objects . Figure 2 shows an example of a class diagram depicting composition and specialization . Each chevron icon represents an activity or process as previously defined . The Sell Product activity is composed by a set of sub-activities such as Identify Customers and Handle Order . These activities can be further decomposed into actions that are more refined . The activity Sell Product is specialized as Sell by Mail Order and Sell Online . Note that composition and specialization do not imply any collaboration constraints between the activities . 4.2 The Role Model Roles are a separation of concerns mechanism that allows business objects to be observed from different perspectives . Role models identify roles as types and describe the network of roles required for a specific collaboration to happen . As a player of a collaboration , a role defines the set of extrinsic properties and behavior necessary to realize its participating collaborations . Figure 3 . Representation of a role model package -LRB- left -RRB- . Pair or related roles -LRB- right -RRB- . Role models are represented as UML packages with two compartments -LRB- v. Figure 3 , left -RRB- . The bottom compartment of the role model is a standard UML activity or interaction diagram describing how the roles are orchestrated . The top compartment of the package depicts the roles within the role model . Roles are represented by rounded rectangles , connected by a navigable collaboration relationship between the roles . The representation of a role always shows its name . Optionally , it also depicts in parenthesis the name of the role model to where the role belongs so that its scope is clearly defined -LRB- v. Figure 3 , right -RRB- . Figure 4 show an example of three role collaborations contained in two role models . The Tutorship role model defines a collaboration pattern between two roles , Tutor and Student . In this Course role model defines two pairs of collaborations : Participant / Taken Course and Lecturer / Given Course . Figure 4 . Example of role collaborations . Roles are modeled as classes and represented in class diagrams Methods and attributes concerning the specific collaboration context can be specified in the class diagram . Roles can also be constrained . A constraint asserts conditions between the roles in a role model . It can be expressed informally or formally -LRB- e.g. in plain text or OCL -RRB- . An example of a constraint is disallowing two roles to be played simultaneously by the same player , such as forbidding an object playing the role of Tutor and that of Student simultaneously and in the same context . Figure 5 . Example of role specialization . Figure 5 is a class diagram that shows how the Teacher role is specialized as Tutor and Lecturer . Role specialization means that if a business object is able to play a child role , then it is also able to play the super role . We have not yet found the need to define abstract roles , i.e. , a role that may only have its non-abstract speciali-zations instantiated . 4.3 Binding Roles to Objects Roles are bound to business objects pertaining to a given business object model . The binding is accomplished via the play relationship stereotype , which links a business object to a role . It means the business object is able to exhibit or play the behavior specified by the target role . Figure 6 . Binding roles to business objects . Figure 6 shows a class diagram where the pairs of roles Tutor / Student , Lecturer / Given Course and Participant / Taken Course defined earlier in Figure 4 and Figure 5 , are bound to two different business objects , Person and Course . The binding between objects and roles is depicted as a strong arrow . The light arrow represents the relationships between roles . The model also defines a constraint in the Tutorship role model . It asserts that the instances actually playing the Tutor and Student role must be distinct . In this example , it means the Person acting as a Tutor and the Person acting as Student must be different objects , as expected . 1311 Figure 7 shows two base role models , Supply and Pay and a composed role model , Purchase . Each role is a class and has methods and attributes concerning the specific collaboration context -LRB- e.g. the Supplier role in the Supply role model has the inquire and order methods -RRB- . The Purchase role model describes the collaborations between a Client and a Supplier , while the Pay role model , specifies Payer and Payee . Figure 7 . Supply , Pay and Purchase role models . Purchase is composed of the role model Supply and role model Pay . The Purchase role model is a composition of the Supply and Pay role models . A purchase results from supplying a product and paying for it . Figure 8 shows the binding of the roles within the Purchase role model to a set of business objects . In the first case , a Retailer acts as the Client and Payer to a Producer who is a Supplier and a Payee to the Retailer . However , the Retailer also acts as a Supplier -LRB- and a Payee -RRB- to a customer . Client -LRB- BankClient -RRB- play play play play play play Supplier -LRB- Purchase -RRB- Client -LRB- Purchase -RRB- Supplier -LRB- Purchase -RRB- Client -LRB- Purchase -RRB- business object Customer Payer -LRB- Purchase -RRB- Payee -LRB- Purchase -RRB- business object Bank B Banker -LRB- BankClient -RRB- Payer -LRB- Purchase -RRB- play Payee -LRB- Purchase -RRB- business object Bank A Banker -LRB- BankClient -RRB- Client -LRB- BankClient -RRB- play business object Producer business object Retailer Figure 8 . Binding roles to business objects . This paper has presented the fundamental concepts towards a conceptual object-oriented framework for role-based business process modeling . It relies on defining two distinct models . The business object model focus on describing the components of a business process -LRB- activities , goals , resources and actors -RRB- as business objects . This model depicts the type of each business object , its intrinsic behavior and properties but does not address the representation of the object 's features that are related to its collaborations with other objects . The role model depicts the collaborative behavior between roles and the constraints that regulate them . Roles are bound to business objects in a specific business object model , thus defining their usage context . This model describes roles as types on their own that can be specialized and aggregated . Role reuse is possible whenever the semantics of the interaction pattern is the same , regardless of the interaction context . The proposed approach separates the specification of the intrinsic features of a business object from its extrinsic features , meaning that the properties and behavior that arise from the collaborations with other objects are separated from the properties concerning the object . This separation results in an increase of the understandability of the business process since each different aspect of the business object may be discussed , analyzed and dealt with separately . Additionally roles also contribute to keep the alignment between the multiple organizational levels where a business process is defined . When a business object specified at business level is mapped to a component at business process support systems level , roles provide information on how to design the component so that changes to other levels can be traced and managed . Since the collaborative aspects of a business object are specified outside the object as roles , changes to a business process only interfere with the roles which derive from the corresponding activities , leaving the intrinsic properties of the object and its remaining roles un-changed . This means that only the implementation of the concerned roles needs modifications . The same reasoning applies the other way around . When the implementation of a specific role or business object is changed due to technical modifications or to the evolution of the software , these changes can be traced up to the processes and goals depending on it . The value of using role modeling increases with the need of making explicit the patterns of interaction between business objects . This is the case of processes where its business objects relate to several other business objects . In this case , understanding and reengineering such a process is often difficult due to the number of dependencies between objects , which are not separated or organized according to the interaction context . This also makes difficult to abstract common behavior patterns so that the business process elements may be reused in other contexts . We are currently extending this framework to enhance the representation of the interaction between business objects and the corresponding business support systems . The goal is to analyze the gap between the existing human skills and information system services of an organization and the requirements imposed by the as-is and to-be business models so that the alignment between these two levels may be improved . 1 . W.Aalst , K.Hee , Workflow Management , MIT Press , 2002 . 2 . S.Alhir , Unified Modeling Language Extension Mechanisms , Distributed Computing , 1998 . 3 . C. Bachman , M. Daya . The role concept in data models , Proceedings of the 3 rd International Conference on VLDB , 1977 . 4 . B. Biddle , E. Thomas , Role Theory , Concepts and Research , Kluwer Publishers , 1979 . 1312 5 . Y. Chan , Why Have n't We Mastered Alignment ? : The Importance of the Informal Organization Structure , MISQ Executive , Vol .1 , No. 2 , 2002 . 6 . B. Curtis , M. Kelner , J. Over , Process Modeling , Communications of the ACM , Vol . 35 , No. 9 , 1992 . 7 . T. Davenport , J. Short , The New Industrial Engineering : Information Technology and Business Process Redesign . Sloan Management Review , 1990 . 8 . H. Eertink , W. Janssen , P. Luttighuis , W. Teeuw , C. Vissers , A Business Process Design Language , World Congress on Formal Methods , Springer , 1999 , pp. 76-95 . 9 . H. Eriksson , M. Penker , Business Modeling with UML , OMG Press , 2001 . 10 . G. Gottlob , M. Schrefl , B. R ck , Extending Object-Oriented Systems with Roles , ACM Transactions on Information Systems , Vol , 14 , 1996 pp. 268-296 . 11 . N. Guarino , M. Carrara , and P. Giaretta . An ontology of meta-level categories . Proceedings of the Fourth International Conference on Knowledge Representation and Reasoning , pages 270 280 . Morgan Kaufmann , 1994 . 12 . T. Halpin , Augmenting UML with Fact-orientation , 34th Hawaii International Conference on System Sciences , IEEE Press , Hawaii , USA , 2001 . 13 . ISO , ISO/IEC 10746 ODP Reference Model , International Standards Organization , 1995 . 14 . E. Kendall , Agent Roles and Role Models , New Abstractions for Multiagent System Analysis and Design , International Workshop on Intelligent Agents , 1998 . 15 . B. Kristiansen , Object-Oriented Modeling with Roles , 1 st Conference on Object Information Systems , 1996 . 16 . M. Madhavji , The Process Cycle , Software Engineering Journal , Vol . 6 , No. 5 , 1991 . 17 . C. McGowan , L. Bohmer , Model-based business process improvement , 15thInternational Conference on Software Engineering , IEEE Computer Society Press , 1993 . 18 . D. Miers , Business Process Engineering , C-T Colin , Kogan Page , London , 1996 . 19 . OMG , Unified Modeling Language Specification , Version 1.5 , formal/03 -03-01 , 2003 . 20 . OMG , Business Object Management Special Interest Group -LRB- BOMSIG -RRB- Glossary of Terms , 1995 . 21 . M. Ould , Business Processes , Modeling and Analysis for Reengineering and Improvement , John Wiley & Sons , 1995 . 22 . A. Scheer , ARIS Business Process Modeling , 2 nd edition , Springer , 1999 . 23 . T. Reenskaug et al. , Working With Objects : The OOram Software Engineering Method . ManningPublication Co. , 1996 . 24 . B. Singh , G. Rein . Role Interaction Nets -LRB- RINs -RRB- : A Process Description Formalism , MCC , 1992 25 . D. Taylor , Business Engineering with Object Technology , John Wiley & Sons , 1995 . 26 . R. Turner , Strategy for Developing an Integrated Role Theory . Humboldt Journal of Sociology and Religion 7 : 123-139 , 1979 . 27 . M. Uschold , M. King , S. Moralee , Y. Zorgios , The Enterprise Ontology , The Knowledge Engineering Review , Vol . 13 , 1998 . 28 . E. Verharen , A Language-Action Perspective on the Design of Cooperative Information Agents , CIP-Gegevens Koninklijke Biibliotheek , 1997 . 29 . T. Walford , Business Process Implementation for IT Professionals and Managers , Arthech House , MA , 1999 . 30 . E. Yourdon , Modern Structured Analysis , Prentice-Hall , Englewood Cliffs , NJ , 1989 . 31 . Workflow Management Coalition , The Workflow Reference Model , 1995 1313

O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O B I O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

business object
role modeling
business process modeling


Sparsha

A

Comprehensive

Indian

Language

Toolset

for

the

Blind

Braille

and

audio

feedback

based

systems

have

vastly

improved

the

lives

of

the

visually

impaired

across

a

wide

majority

of

the

globe

However

more

than

million

visually

impaired

people

in

the

Indian

sub-continent

could

not

benefit

much

from

such

systems

This

was

primarily

due

to

the

difference

in

the

technology

required

for

Indian

languages

compared

to

those

corresponding

to

other

popular

languages

of

the

world

In

this

paper

we

describe

the

Sparsha

toolset

The

contribution

made

by

this

research

has

enabled

the

visually

impaired

to

read

and

write

in

Indian

vernaculars

with

the

help

of

a

computer

D.

-LSB-

Software

-RSB-

General

General

Terms

Human

Factors

Experimentation

The

advent

of

computer

systems

has

opened

up

many

avenues

for

the

visually

impaired

They

have

benefited

immensely

from

computer

based

systems

like

automatic

text-to-Braille

translation

systems

and

audio

feedback

based

virtual

environments

Automatic

text-to-Braille

translation

systems

are

widely

available

for

languages

like

English

French

Spanish

Portuguese

and

Swedish

-LSB-

-RSB-

Similarly

audio

feedback

based

interfaces

like

screen

readers

are

available

for

English

and

other

languages

-LSB-

ref

c

-RSB-

These

technologies

have

enabled

the

visually

impaired

to

communicate

effectively

with

other

sighted

people

and

also

harness

the

power

of

the

Internet

However

most

of

these

technologies

remained

unusable

to

the

large

visually

impaired

population

in

the

Indian

sub-continent

-LSB-

-RSB-

This

crisis

can

be

attributed

to

primarily

two

reasons

First

the

languages

in

the

mentioned

region

differ

widely

from

other

popular

languages

in

the

world

like

English

These

languages

or

vernaculars

also

use

relatively

complex

scripts

for

writing

Hence

the

technologies

used

for

English

and

other

such

languages

can

not

be

easily

extended

to

these

languages

Secondly

the

development

of

these

technologies

for

Indian

languages

right

from

scratch

is

not

trivial

as

the

various

Indian

languages

also

differ

significantly

amongst

themselves

The

Sparsha

toolset

uses

a

number

of

innovative

techniques

to

overcome

the

above

mentioned

challenges

and

provides

a

unified

framework

for

a

large

number

of

popular

Indian

languages

Each

of

the

tools

of

Sparsha

will

be

discussed

in

detail

in

the

following

sections

Apart

from

English

the

languages

supported

by

Sparsha

include

Hindi

Bengali

Assamese

Marathi

Gujarati

Oriya

Telugu

and

Kannada

The

motivation

for

this

work

is

to

enable

the

visually

impaired

to

read

and

write

in

all

Indian

languages

The

toolset

set

has

been

named

Sparsha

since

the

word

Sparsha

means

touch

in

Hindi

something

which

is

closely

associated

with

how

Braille

is

read

Bharati

Braille

is

a

standard

for

writing

text

in

Indian

languages

using

the

six

dot

format

of

Braille

It

uses

a

single

script

to

represent

all

Indian

languages

This

is

done

by

assigning

the

same

Braille

cell

to

characters

in

different

languages

that

are

phonetically

equivalent

In

other

words

the

same

combination

of

dots

in

a

cell

may

represent

different

characters

in

each

of

the

different

Indian

languages

However

a

single

character

in

an

Indian

language

may

be

represented

by

more

than

one

Braille

cell

The

above

mentioned

characteristics

of

Bharati

Braille

code

is

illustrated

in

Figure

There

are

many

other

issues

and

rules

related

to

Bharati

Braille

These

will

be

discussed

in

the

following

sections

along

with

the

methods

used

for

implementing

them

Braille

a

k

T

-RCB-

Hindi

Bengali

Kannada

Oriya

Figure

Examples

of

characters

in

Indian

languages

and

their

corresponding

Bharati

Braille

representation

Permission

to

make

digital

or

hard

copies

of

all

or

part

of

this

work

for

personal

or

classroom

use

is

granted

without

fee

provided

that

copies

are

not

made

or

distributed

for

profit

or

commercial

advantage

and

that

copies

bear

this

notice

and

the

full

citation

on

the

first

page

To

copy

otherwise

or

republish

to

post

on

servers

or

to

redistribute

to

lists

requires

prior

specific

permission

and/or

a

fee

ASSETS

October

Baltimore

Maryland

USA

Copyright

ACM

Transliteration

to

Bharati

Braille

As

shown

in

Figure

characters

from

different

Indian

languages

can

be

mapped

to

the

same

Braille

representation

Thus

in

order

to

implement

this

the

system

uses

separate

code

tables

for

each

of

the

languages

and

depending

on

the

users

choice

of

input

language

the

corresponding

code

table

is

used

The

said

method

of

implementation

also

makes

the

system

highly

scalable

and

allows

the

inclusion

of

more

languages

in

future

if

required

For

instance

this

technique

is

being

used

successfully

to

extend

the

system

to

include

Urdu

and

Sinhala

This

work

is

expected

to

be

completed

in

the

near

future

Figure

Formation

of

Conjugates

Another

important

aspect

of

Indian

languages

is

the

formation

of

consonant

clusters

or

conjugates

In

traditional

hand

written

text

this

may

be

expressed

conceptually

as

the

first

consonant

followed

by

a

special

character

called

halanth

which

in

turn

is

followed

by

the

second

character

The

consonant

cluster

may

again

be

followed

by

a

vowel

However

the

visual

representation

of

such

a

consonant

cluster

or

conjugate

may

be

quite

different

from

the

visual

representation

of

each

of

the

individual

consonants

included

in

it

as

shown

in

Figure

However

while

translating

the

same

text

into

Bharati

Braille

the

special

character

halanth

must

precede

both

the

consonants

to

be

combined

into

a

single

conjugate

The

above

constraints

necessarily

mean

that

the

Braille

translation

for

a

particular

character

also

depends

on

the

sequence

of

characters

preceding

and

following

it

Hence

in

order

to

perform

the

tasks

efficiently

the

system

uses

a

finite

state

machine

based

approach

similar

to

that

of

lexical

analyzers

-LSB-

-RSB-

The

mentioned

approach

also

proves

to

be

suitable

for

handling

other

issues

associated

with

standard

Braille

translation

like

detection

of

opening

and

closing

quotation

marks

string

of

uppercase

characters

Apart

from

Indian

languages

the

Sparsha

system

supports

the

translation

of

English

language

texts

into

grade

and

grade

Braille

The

system

maintains

a

database

of

all

standard

Braille

contractions

which

is

used

for

generating

grade

Braille

Furthermore

the

system

allows

the

user

to

add

new

contractions

to

the

existing

database

The

Sparsha

system

also

supports

the

proper

translation

of

a

document

containing

text

both

in

English

as

well

as

an

Indian

Language

According

to

standard

Braille

notations

-LSB-

-RSB-

the

change

in

language

is

indicated

through

the

proper

use

of

the

letter

sign

However

a

single

document

containing

text

in

more

than

one

Indian

language

can

not

be

translated

into

Braille

such

that

the

reader

is

able

to

distinguish

each

of

the

languages

correctly

This

is

due

to

the

following

reason

As

mentioned

previously

the

same

Braille

representation

can

refer

to

different

characters

in

different

Indian

languages

this

leads

to

the

inherent

ambiguity

Figure

A

screenshot

of

the

interface

for

translating

and

editing

Braille

in

the

Sparsha

system

Reverse

transliteration

The

Sparsha

system

allows

reverse

transliteration

of

Braille

to

text

both

for

Indian

languages

as

well

as

English

This

allows

the

visually

impaired

to

communicate

seamlessly

with

other

sighted

people

The

Braille

code

to

be

translated

may

be

entered

into

the

computer

using

a

standard

six

key

Braille

keyboard

After

translating

the

Braille

code

into

text

the

visually

readable

text

may

then

be

checked

for

correctness

using

a

file

reading

system

which

will

be

described

in

later

section

In

order

to

achieve

reverse

translation

from

Braille

to

text

the

system

uses

a

finite

state

machine

based

approach

similar

to

that

used

for

translating

text

to

Braille

as

described

previously

The

task

of

reverse

translation

also

uses

the

code

tables

corresponding

to

the

language

to

which

the

text

is

being

translated

Thus

the

system

can

easily

be

extended

to

other

languages

just

by

adding

the

corresponding

code

tables

to

achieve

both

forward

and

reverse

translation

Methods

of

Input

Output

Sparsha

can

accept

English

text

for

translation

in

the

form

of

plain

text

files

HTML

-LRB-

hyper

text

markup

language

-RRB-

files

and

Microsoft

Word

documents

Apart

from

English

the

Sparsha

Braille

translation

system

as

described

can

take

input

text

in

Indian

languages

This

input

can

be

given

to

the

system

in

a

number

of

forms

as

follows

ISCII

-LRB-

Indian

Script

Code

for

Information

Interchange

-RRB-

-LSB-

-RSB-

documents

generated

by

applications

like

iLeap

-LSB-

-RSB-

documents

generated

by

iLeap

-LSB-

-RSB-

Unicode

text

generated

by

any

standard

editor

supporting

Unicode

-LSB-

-RSB-

This

technique

will

be

discussed

in

detail

in

a

later

section

The

output

of

the

Braille

translation

can

be

obtained

on

a

large

variety

of

commercial

Braille

embossers

-LSB-

-RSB-

The

Sparsha

system

has

been

tested

on

the

following

Braille

embossers

Index

Basic-S

Index

Basic-D

Index

PRO

Braillo

Modified

Perkins

Brailler

-LSB-

-RSB-

Alternatively

the

output

may

be

obtained

on

tactile

Braille

displays

-LSB-

-RSB-

At

the

time

of

this

development

there

existed

a

few

translators

for

converting

mathematics

to

Braille

-LSB-

b

-RSB-

However

these

were

found

to

be

unsuitable

for

the

visually

impaired

in

the

Indian

sub-continent

due

to

a

number

of

reasons

Firstly

the

Braille

code

used

for

mathematics

in

India

is

slightly

different

from

those

used

in

other

parts

of

the

world

-LSB-

-RSB-

however

it

bears

close

resemblance

to

the

Nemeth

code

-LSB-

-RSB-

Secondly

the

interleaving

of

Braille

mathematics

with

text

in

Indian

languages

was

also

not

possible

with

the

available

systems

Thirdly

many

of

these

systems

require

a

working

knowledge

of

LaTex

-LSB-

-RSB-

This

can

not

be

expected

from

every

user

Finally

most

of

these

systems

are

unaffordable

to

the

visually

impaired

in

the

Indian

sub-continent

The

above

mentioned

reasons

warranted

the

development

of

a

mathematics-to-Braille

translation

system

for

the

Indian

subcontinent

The

system

thus

developed

can

translate

almost

all

mathematic

and

scientific

notations

It

also

allows

the

user

to

interleave

mathematic

and

scientific

expressions

with

text

in

both

Indian

languages

and

English

In

order

to

allow

the

user

to

write

complex

mathematic

and

scientific

expressions

the

system

provides

a

special

editor

for

the

purpose

The

above

mentioned

editor

is

named

Nemeth

editor

after

Abraham

Nemeth

-LSB-

t

-RSB-

Thus

the

user

is

exempted

from

the

task

of

learning

LaTex

The

editor

provides

a

GUI

-LRB-

Graphic

User

Interface

-RRB-

as

shown

in

Figure

for

writing

a

mathematic

or

scientific

expression

in

a

form

similar

to

that

used

by

LaTex

This

string

can

then

be

readily

converted

into

Braille

by

the

translation

engine

However

the

mathematical

expression

formed

by

the

editor

must

be

enclosed

within

a

pair

of

special

character

sequences

This

needs

to

be

done

so

that

when

the

mathematic

or

scientific

expression

is

embedded

within

another

English

or

Indian

language

text

it

is

properly

translated

to

Braille

using

the

standard

for

mathematic

and

scientific

notation

Figure

Screenshot

of

the

Nemeth

Editor

The

selection

of

mathematical

symbols

and

notations

is

done

by

the

user

in

a

menu

driven

fashion

using

the

GUI

The

set

of

all

mathematic

and

scientific

notations

is

partitioned

in

to

separate

collections

each

consisting

of

similar

notations

Alternatively

the

text

may

be

entered

by

the

user

in

a

LaTex

like

format

using

any

standard

text

editor

Elementary

tactile

graphics

is

one

of

the

best

methods

for

introducing

certain

subjects

like

geometry

to

visually

impaired

students

However

such

tactile

graphics

have

remained

outside

the

reach

of

the

common

man

This

is

due

to

the

fact

that

sophisticated

Braille

embossers

and

expensive

image

conversion

software

are

necessary

for

the

purpose

Sparsha

Chitra

aims

to

provide

relatively

simple

tactile

graphics

which

can

be

obtained

even

by

using

low

cost

Braille

embossers

like

the

modified

Perkins

Brailler

-LSB-

-RSB-

In

other

words

no

assumptions

have

been

about

any

special

feature

of

the

Braille

embosser

being

used

This

allows

tactile

graphics

to

be

embossed

using

just

the

Braille

embossing

capability

of

the

embosser

The

tactile

graphics

obtained

from

any

image

may

be

viewed

and

edited

before

finally

being

embossed

The

image

may

also

be

scaled

up

or

down

to

a

size

suitable

for

embossing

The

system

also

allows

the

image

color

to

be

inverted

in

order

to

improve

the

contrast

Sparsha

Chitra

takes

its

input

in

HTML

format

such

that

additional

text

can

be

included

along

with

the

tactile

representation

of

the

image

Sparsha

is

the

feeling

of

touch

and

Chitra

in

Hindi

means

picture

and

thus

this

tool

is

named

Sparsha

Chitra

The

primary

limitation

of

this

tool

is

that

complex

images

can

not

be

represented

very

clearly

However

the

effect

of

this

drawback

is

mitigated

by

the

fact

that

the

amount

of

detail

that

can

be

observed

through

touch

is

also

limited

Furthermore

the

size

of

the

tactile

image

is

restricted

by

the

bounds

imposed

by

the

sheet

on

which

it

is

embossed

The

functions

for

scaling

the

tactile

image

may

prove

to

be

useful

in

such

a

case

Figure

Screenshot

of

Spasha

Chitra

In

order

to

enter

text

into

the

computer

in

English

a

visually

impaired

user

can

take

the

help

of

any

standard

screen

reader

-LSB-

-RSB-

Screen

readers

have

proved

to

be

vital

to

visually

impaired

computer

users

-LSB-

-RSB-

Such

screen

readers

are

commercially

available

However

such

screen

readers

are

not

available

for

Indian

languages

This

was

primarily

due

to

the

reasons

mentioned

at

the

beginning

of

this

paper

The

file

reader

which

will

be

described

in

this

section

will

redeem

the

situation

and

allow

the

user

to

type

in

text

in

Indian

languages

using

Microsoft

Word

For

performing

other

tasks

related

to

the

operating

system

the

user

may

use

any

of

the

standard

screen

readers

The

construction

of

such

a

file

reader

requires

a

number

of

vital

components

-LSB-

-RSB-

These

include

text-to-speech

engines

for

Indian

languages

fonts

for

Indian

languages

keyboard

layouts

for

them

proper

rendering

engines

and

a

text

editor

which

can

support

Indian

languages

Each

of

these

components

will

be

described

briefly

in

the

following

sections

This

will

be

followed

by

a

description

of

the

overall

architecture

of

the

system

and

its

functioning

Speech

synthesis

system

A

speech

synthesis

system

is

vital

for

the

functioning

of

any

screen

reader

It

is

responsible

for

producing

human

voice

rendition

of

the

text

provided

to

it

by

the

screen

reader

In

case

of

screen

readers

the

speech

synthesis

system

should

be

able

to

deliver

the

voice

in

real-time

This

is

necessary

for

visually

impaired

users

to

get

instantaneous

audio

feedback

A

multilingual

screen

reader

necessarily

needs

a

speech

synthesis

system

for

each

of

the

languages

that

it

supports

The

mentioned

file

reader

uses

a

speech

synthesis

engine

for

Indian

languages

called

Shruti

-LSB-

-RSB-

Shruti

support

two

popular

Indian

languages

namely

Hindi

and

Bengali

It

uses

a

method

of

di-phone

concatenation

for

speech

synthesis

This

allows

the

speech

synthesis

system

to

produce

reasonable

real-time

performance

at

the

same

time

maintaining

a

low

memory

space

requirement

Fonts

and

Rendering

There

are

number

issues

involved

with

Indian

language

fonts

and

their

rendering

This

is

due

to

the

fact

that

Indian

language

scripts

are

generally

complex

in

nature

The

Microsoft

Windows

system

can

be

configure

for

correctly

rendering

these

complex

Indian

language

scripts

Correct

rendering

of

fonts

is

achieved

through

the

use

of

Uniscribe

-LRB-

Unicode

Script

Processor

-RRB-

and

OTLS

-LRB-

OpenType

Layout

Services

-RRB-

libraries

-LSB-

-RSB-

Furthermore

glyph

substitution

and

glyph

repositioning

as

shown

in

Figure

are

closely

associated

with

the

rendering

of

text

in

Indian

languages

For

this

reason

OpenType

fonts

have

been

found

to

be

suitable

for

Indian

languages

as

they

carry

within

the

font

file

explicit

information

about

glyph

substitution

and

glyph

positioning

This

maintained

in

the

form

of

two

tables

namely

GSUB

-LRB-

Glyph

Substitution

-RRB-

and

GPOS

-LRB-

Glyph

Positioning

-RRB-

Editor

for

Indian

Languages

A

number

of

text

editor

are

available

for

Indian

languages

Many

of

these

editors

are

difficult

to

use

and

are

non-intuitive

On

the

other

hand

it

has

been

observed

that

Microsoft

Word

XP

-LRB-

Word

-RRB-

performs

reasonably

well

for

Indian

languages

when

proper

fonts

and

rendering

engines

are

used

Thus

Microsoft

Word

has

been

used

instead

of

creating

a

new

editor

for

the

file

reading

application

as

shown

in

Figure

Microsoft

Word

also

provides

certain

additional

features

which

have

been

used

extensively

for

the

development

of

the

file

reader

These

features

have

been

discussed

in

detail

in

the

following

paragraphs

The

use

of

Microsoft

Word

also

motivates

visually

impaired

users

to

switch

to

main

stream

applications

and

also

eliminates

the

effort

of

learning

another

system

Microsoft

Word

supports

Unicode

-LSB-

-RSB-

hence

it

can

accept

text

in

any

Indian

language

However

in

order

to

enter

text

in

an

Indian

language

in

the

Windows

system

a

keyboard

layout

or

IME

-LRB-

Input

Method

Editor

-RRB-

-LSB-

-RSB-

for

that

language

is

required

Keyboard

layouts

are

available

for

some

popular

Indian

languages

like

Hindi

For

other

Indian

languages

it

may

have

to

be

created

In

our

case

a

keyboard

layout

had

to

be

created

for

Bengali

Figure

File

reader

System

Architecture

The

capabilities

of

the

Microsoft

Word

can

be

extended

using

COM

-LRB-

Component

Object

Model

-RRB-

Add-Ins

Such

Add-Ins

are

basically

programs

that

run

within

the

framework

provided

by

Microsoft

Word

The

file

reader

has

been

developed

in

the

form

of

such

an

Add-In

It

interacts

closely

with

the

editor

to

provide

necessary

audio

feedback

for

text

in

Indian

languages

Such

interaction

takes

place

through

the

object

model

exposed

by

Microsoft

Word

The

file

reader

may

be

configured

to

start

up

every

time

Microsoft

Word

is

used

Overall

System

Structure

and

Operation

The

overall

architectural

structure

of

the

file

reader

system

is

shown

in

Figure

Most

of

the

components

of

the

system

shown

in

the

figure

have

been

discussed

in

the

last

few

sections

The

interaction

between

the

different

components

and

how

they

operate

as

a

system

will

be

discussed

in

this

section

Keyboard

hooks

are

placed

within

the

operating

system

by

the

file

reader

Add-In

The

keyboard

hooks

are

responsible

for

trapping

the

keystrokes

entered

by

the

user

through

the

keyboard

A

copy

of

the

entered

keystrokes

is

passed

to

the

file

reader

Add-In

The

keystrokes

are

then

passed

to

the

keyboard

layout

or

IME

which

is

integrated

with

the

operating

system

The

keyboard

layout

translates

the

keystrokes

into

Unicode

characters

and

passes

them

to

the

editor

Figure

Screenshot

of

the

file

reader

in

operation

using

Microsoft

Word

In

the

mean

while

the

file-reader

Add-In

on

receiving

the

keystrokes

provides

appropriate

audio

feedback

by

invoking

the

speech

synthesis

engine

Again

certain

combinations

of

keystrokes

are

recognized

by

the

file

reader

Add-In

as

special

commands

These

request

the

file

reader

to

read

out

a

certain

portions

of

the

text

This

selected

text

is

then

passed

to

the

speech

synthesis

system

for

producing

human

voice

rendition

Thus

providing

an

audio

feedback

based

virtual

environment

for

Indian

languages

The

file

reader

can

be

further

extended

to

provide

full

screen

reading

functionality

by

using

Microsoft

Active

Accessibility

A

subset

of

the

Sparsha

system

known

as

the

Bharati

Braille

Transliteration

System

has

been

deployed

by

Webel

Mediatronics

Limited

in

a

number

of

organizations

for

the

visually

impaired

all

over

India

as

a

part

of

a

project

sponsored

by

the

Ministry

of

Communication

and

Information

Technology

Government

of

India

As

a

result

of

these

field

tests

the

system

underwent

an

iterative

process

of

refinement

to

reach

its

current

form

A

plethora

of

request

and

suggestions

from

visually

impaired

users

led

to

the

development

and

inclusion

of

a

number

of

additional

features

and

tools

that

were

added

to

the

toolset

These

include

the

Sparsha

Chitra

and

the

file

readers

for

Indian

languages

The

process

of

continuous

feedback

helped

the

Sparsha

toolset

mature

over

the

years

It

also

helped

in

weeding

out

many

bugs

and

shortcomings

of

the

initial

versions

of

the

system

Obtained

Results

The

Sparsha

system

is

under

a

continuing

process

of

use

and

evaluation

This

feedback

is

being

used

to

make

the

system

more

usable

to

the

visually

impaired

and

to

enhance

the

features

provided

by

the

system

Training

and

deployment

of

the

system

has

also

been

carried

out

at

a

number

of

premier

organizations

for

the

visually

impaired

These

include

The

National

Association

for

the

Blind

Delhi

Blind

Peoples

Association

Ahmedabad

National

Institute

for

the

Visually

Handicapped

Dehradun

The

Braille

translation

system

has

been

tested

on

a

large

number

of

computers

in

these

organizations

The

typical

performance

characteristics

of

the

Sparsha

Braille

translation

system

is

as

shown

in

Figure

The

performance

characteristics

have

been

measured

for

two

different

personal

computer

systems

English

Grade

II

Braille

200 600 1000 1400

1800 2200 2600 3000

3400 3800 5000

Word

Count

Ti

m

e

-LRB-

m

i

l

l

i

s

e

c

on

ds

-RRB-

-LRB-

a

-RRB-

Grade

I

Braille

200 600 1000 1400

1800 2200 2600 3000

3400 3800 5000

Word

Count

T

i

m

e

-LRB-

m

illis

e

c

onds

-RRB-

English

Indian

Languages

English

Indian

Languages

-LRB-

b

-RRB-

Figure

Graphs

showing

the

computation

time

taken

during

Braille

translation

for

-LRB-

a

-RRB-

Grade

II

English

-LRB-

b

-RRB-

Grade

I

English

and

Indian

languages

The

computers

have

the

following

specifications

-LRB-

Processor

Type

Primary

Memory

Hard

disk

-RRB-

Intel

Pentiun

GHz

MB

GB

referred

to

as

Intel

Pentium

III

MHz

MB

GB

referred

to

as

The

Sparsha

Chitra

tool

was

tested

by

visually

impaired

users

and

the

obtained

results

are

given

in

Figure

This

was

done

by

handing

them

sheets

of

paper

Braille

paper

with

tactile

diagrams

created

by

Sparsha

Chitra

and

asking

them

to

guess

the

image

on

the

sheets

Correct

guess

Can

not

guess

Close

guess

Wrong

guess

Figure

User

response

to

tactile

images

generated

by

Sparsha

Chitra

Most

of

these

images

were

geometric

figures

The

majority

of

the

guesses

were

correct

while

a

large

percentage

of

the

guesses

were

very

close

like

identifying

a

rectangle

as

square

or

a

triangle

as

a

mountain

Such

misinterpretations

often

occur

due

to

lack

of

color

information

or

misjudging

dimensions

which

is

indeed

quite

difficult

estimate

from

tactile

representations

The

file

reader

tool

needs

extensive

training

before

a

ve

user

can

use

it

efficiently

Visually

impaired

users

who

are

already

familiar

with

Jaws

or

other

screen

readers

can

adapt

to

this

system

very

quickly

This

tool

was

primarily

tested

by

visually

impaired

users

having

reasonable

experience

with

Jaws

Jaws

File

reader

for

Indian

Languages

W

o

rd

s

p

e

r

M

i

n

u

t

e

Figure

Comparison

of

the

typing

speed

of

a

visually

impaired

user

using

Jaws

and

the

Indian

language

file

reader

The

Indian

language

file

reader

could

not

be

experimented

with

a

large

number

of

users

since

a

good

level

of

expertise

with

screen

readers

is

required

for

using

the

file

reader

efficiently

The

experimental

results

shown

in

Figure

and

pertain

to

a

particular

visually

impaired

user

having

some

experience

with

Jaws

The

experiments

were

carried

out

by

dictating

a

paragraph

of

about

hundred

words

to

the

user

while

he

typed

it

into

the

computer

using

the

Indian

language

file

reader

However

this

is

only

a

preliminary

experiment

It

was

also

found

that

both

the

typing

speed

and

the

error

rates

improved

significantly

with

practice

No

Errors

One

Error

Two

Errors

More

than

Errors

Figure

Number

of

words

with

errors

for

every

ten

words

The

Sparsha

toolset

is

in

the

process

of

being

extended

to

a

number

of

other

languages

in

the

Indian

subcontinent

This

includes

Urdu

and

Sinhala

The

file

reader

in

the

Sparsha

toolset

is

also

limited

by

the

availability

of

text

to

speech

synthesis

engines

for

all

Indian

languages

Hopefully

these

will

be

available

in

the

near

future

and

allow

the

system

to

be

extended

to

more

languages

It

is

also

envisioned

that

the

Sparsha

system

will

be

ported

to

mobile

handheld

systems

This

will

enable

the

visually

impaired

to

communicate

on

the

move

As

of

now

the

required

text

to

speech

synthesis

engines

have

been

ported

onto

the

Microsoft

Pocket

PC

platform

as

well

as

on

an

ARM-Linux

platform

It

is

only

a

matter

of

time

before

the

file

reader

becomes

functional

on

such

mobile

platforms

The

Sparsha

system

named

after

the

feeling

of

touch

has

been

the

first

attempt

to

help

visually

impaired

users

in

the

Indian

subcontinent

read

and

write

in

their

native

tongues

In

this

paper

the

various

aspects

of

Indian

languages

and

how

they

differ

from

other

languages

in

the

world

has

been

explained

It

also

been

discussed

how

these

issues

have

been

tackled

in

the

Sparsha

system

The

paper

describes

in

depth

the

various

tools

included

in

the

Sparsha

toolset

These

tools

form

a

comprehensive

toolset

for

Indian

languages

It

can

be

hoped

that

the

Sparsha

system

would

help

increase

the

literacy

rates

among

the

million

visually

impaired

in

the

Indian

subcontinent

The

authors

would

like

to

thank

Media

Lab

Asia

for

sponsoring

a

part

of

the

work

related

to

the

file

reader

The

authors

would

also

like

to

thank

the

National

Association

for

the

Blind

Delhi

and

many

other

organizations

for

the

blind

for

their

sustained

help

and

cooperation

during

the

entire

development

process

The

authors

owe

special

thanks

to

Mr.

Samit

Patra

Director

Electrosoft

Consultants

for

his

enormous

help

with

many

technical

aspects

of

the

work

-LSB-

-RSB-

Basu

Anupam

Roy

S.

Dutta

P.

and

Banerjee

S.

A

PC

Based

Multi-user

Braille.Reading

System

for

the

Blind

Libraries

IEEE

Transactions

on

Rehabilitation

Engineering

Vol

No.

March

pp.

-LSB-

-RSB-

Blenkhorn

P.

Requirements

for

Screen

Access

Software

using

Synthetic

Speech

Journal

of

Microcomputer

Applications

-LSB-

-RSB-

Blenkhorn

Paul

A

System

for

Converting

Braille

to

Print

IEEE

Transactions

on

Rehabilitation

Engineering

Vol

No

June

pp.

-LSB-

-RSB-

Braille

Mathematics

Code

for

India

Manual

Prepared

under

the

project

Adoption

and

Introduction

of

an

Appropriate

Braille

Mathematics

Code

for

India

sponsored

by

UNICEF

Published

by

National

Institute

for

Visually

Handicapped

Dehra

Dun

and

National

Association

for

the

Blind

Bombay

India

-LSB-

-RSB-

Cranmer

T.

V.

and

Abraham

Nemeth

A

Uniform

Braille

Code

memo

to

the

members

of

the

BANA

Board

-LRB-

January

-RRB-

Available

at

or

-LSB-

-RSB-

Das

P.K.

Das

R.

Chaudhuri

A.

A

computerised

Braille

transcriptor

for

the

visually

handicapped

Engineering

in

Medicine

and

Biology

Society

and

Conference

of

the

Biomedical

Engineering

Society

of

India

An

International

Meeting

Proceedings

of

the

First

Regional

Conference

IEEE

Feb.

Page

-LRB-

s

-RRB-

-LSB-

-RSB-

Duxbury

Braille

Translator

-LSB-

-RSB-

HAL

Dolphin

Computer

Access

-LSB-

-RSB-

Hudson

John

for

Microsoft

Typography

Windows

Glyph

Processing

an

Open

Type

Primer

November

ntro.mspx

-LSB-

-RSB-

iLeap

Centre

for

Development

of

Advanced

Computing

-LSB-

-RSB-

International

Council

on

English

Braille

-LRB-

ICEB

-RRB-

Unified

English

Braille

Code

-LRB-

UEBC

-RRB-

Research

Project

-LSB-

-RSB-

JAWS

for

Window

Freedom

Scientific

asp

-LSB-

-RSB-

Lamport

L.

LaTeX

A

Document

Preparation

System

Addison-Wesley

ISBN

-LSB-

-RSB-

Microsoft

Typography

Specifications

overview

w.mspx

-LSB-

-RSB-

Modified

Perkins

Brailler

Webel

Mediatronics

Limited

-LSB-

-RSB-

MONTY

VisuAide

-LSB-

-RSB-

National

Association

for

the

Blind

India

Available

at

-LSB-

-RSB-

NFBTRANS

National

Federation

of

the

Blind

-LSB-

-RSB-

Pennington

C.A.

and

McCoy

K.F.

Providing

Intelligent

Language

Feedback

or

Augmentative

Communication

Users

Springer-Verlag

-LSB-

-RSB-

Raman

T.V.

-LRB-

-RRB-

Emacspeak

a

speech

interface

Proceedings

of

April

-LSB-

-RSB-

Rolfe

Russ

What

is

an

IME

-LRB-

Input

Method

Editor

-RRB-

and

how

do

I

use

it

-LSB-

-RSB-

Shruti

Media

Lab

Asia

Research

Laboratory

Indian

Institute

of

Technology

Kharagpur

-LSB-

-RSB-

Taylor

Anne

Choosing

your

Braille

Embosser

Braille

Monitor

October

Available

at

-LSB-

-RSB-

Technology

Development

for

Indian

Languages

Department

of

Information

Technology

Ministry

of

Communication

Information

Technology

Government

of

India

Available

at

-LSB-

-RSB-

Unicode

-LSB-

-RSB-

WinBraille

Index

Braille

O O O O O O O O O O B O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B O O O O O O O B I O O O O O O B O O O O O O O O O B I O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B I O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B I O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O B I O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O