The following content is part of the [[ start | Ontology Working Group]]. Ontology Working Group projects are: * [[SbvrEditorProject|SBVR Editor Project]] Internal links are created by using square brackets. You can either just give a [[SbvrEditorProject]] or use an additional [[SbvrEditorProject|SBVR Editor Project]]. ====== Welcome to the SBVR Editor Project ====== ===== Introduction ===== The goal of the Semantics of Business Vocabulary and Rules (SBVR) Editor Project is to create an environment that facilitates the development of formal vocabularies using the OMG November 2013 version 1.2 of the Semantics of Business Vocabulary and Rules (SBVR) Specification found at: [[http://www.omg.org/spec/SBVR/1.2|http://www.omg.org/spec/SBVR/1.2]] * Develop Business Vocabularies from existing governing documents (i.e., Code of Federal Regulations, CFR) * Load document into Hadoop * Start with natural language vocabulary * Collaborative Marking and Annotating with Semantics of SBVR constructs to develop Business Specific Vocabulary from the document * Collaborated with RTI ===== Background ===== Based on the Governance, Risk and Compliance Technology Centre (GTCTC) work On The Road to Regulatory Ontologies * Create a Collaborative environment for creating and editing Business Vocabulary and Business Rules(SBVR) * Leverage existing SBVR Editor in the future * Use Big Data concepts to process and manage voluminous regulations ===== Requirements ====== * Based on COTS products * Standards Based * Multi-User collaboration in Real-Time * Use Big-Data to store data * Integrate with GRCTC SBVR Editor in future * Use Operational Transformation (OT) to synchronize changes made by multiple authors ===== Reference Architecture ===== * RTI DDS Connext * Routing Service * HADOOP File System (HDFS) * NodeJS * RTI DDS Connector * TinyMCE * Node Webkit (NWK) * WebHDFS * PostgreSQL * HTML * XML * CSS * JavaScript * Angular JS * Natural Language Processor * Linux (Unbuntu) * MacOSX * Windows ===== Architecture ===== ==== As-Is Architecture Diagram ==== {{ :sbvr_editor_as-is_architecture_diagram.png?800 | The As-Is Architecture Diagram }} ==== Proposed To-Be Architecture Diagram ==== {{ :sbvr_editor_to-be_architecture_diagram.png?800 | SBVR Editor To-be Architecture Diagram}} ==== As-Is Routing Service ==== {{ :sbvr_editor_as-is_routing_service.png?800 | SBVR Editor As-Is Routing Service}} ===== Use Cases ===== ==== Operation Transformation (OT) ==== === Example Work Flow ==== The following use cases were developed using the [[http://operational-transformation.github.io/visualization.html | OT Visualization site]] which provides an excellent interactive tool of the flow of data between two OT clients and a server. In this use case, there are three actors: * Alice * Bob * OT Server Alice and Bob are actively editing the same document, //__Lorem ipsum__//. The As alice and Bob edit the document a series of operations for those edits is sent to the OT Server. The OT Server mediates the edits and sends edits back to Alice and Bob. The initial demonstration looks like this: {{ :lorem_ipsum_demo_-_1.png?800 |}} ^ Step ^ Description ^ Server Test ^ Alice Text ^ Bob ^ | 1 | Initial State |''Lorem ipsum ''|''Lorem ipsum ''|''Lorem ipsum ''| | 2 | Alice moves the cursor to position 6, just after the 'm' and types ' A1' |''Lorem ipsum ''|''Lorem A1 ipsum ''|''Lorem ipsum ''| | 3 | Bob moves the cursor to position 6, just after the 'm' and types ' B1' |''Lorem ipsum ''|''Lorem A1 ipsum ''|''Lorem B1 ipsum ''| | 4 | Bob moves the cursor to the end of the line after ipsum and adds ' B2' |''Lorem ipsum ''|''Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 5 | Server processes Alice's first operation (see step 2) |''Lorem ipsum ''|''Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 6 | Alice processes first in-bound queue |''Lorem ipsum ''|''Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 7 | Alice moves cursor to the beginning of the line and types 'A2 ' |''Lorem ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 8 | Server processes Alice's second operation (see step 2) |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 9 | Server processes Bob's first operation (see step 3) |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 10 | Bob processes first of Alice's operations |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 ipsum B2 ''| | 11 | Bob processes second of Alice's operations |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 12 | Alice processes third in-bound queue |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 13 | Alice processes Bob's change from inbound queue |''Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 14 | Server processes next Alice operation from inbound queue |''A2 Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 15 | Alice processes next inbound queue |''A2 Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 16 | Bob processes next inbound queue |''A2 Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''Lorem B1 A1 ipsum B2 ''| | 17 | Bob processes next inbound queue |''A2 Lorem A1 ipsum ''|''A2 Lorem A1 ipsum ''|''A2 Lorem B1 A1 ipsum B2 ''| | 18 | Server processes Bob's third change |''A2 Lorem B1 A1 ipsum B2 ''|''A2 Lorem A1 ipsum ''|''A2 Lorem B1 A1 ipsum B2 ''| | 19 | Alice processes next inbound queue |''A2 Lorem B1 A1 ipsum B2 ''|''A2 Lorem B1 A1 ipsum B2 ''|''A2 Lorem B1 A1 ipsum B2 ''| | 20 | Bob processes last inbound queue |''A2 Lorem B1 A1 ipsum B2 ''|''A2 Lorem B1 A1 ipsum B2 ''|''A2 Lorem B1 A1 ipsum B2 ''| The final demonstration looks like this: {{ :lorem_ipsum_demo_-_2.png?800 |}} The following two files help provided a step by step use-case. * {{:ot_-_workflow_v1.pdf| PDF Version of the Use-Case}} * {{:ot_-_workflow_v1.xls| Spreadsheet version of the Use-Case}} ==== As-Is Normative OT Server Architecture ==== The following diagram captures the normative "as-is" architecture for the OT server. {{ :as-is_ot_server_normative_architecture.png?800 | The Initial State of the As-Is OT Server }} Initially, there are three main actors: * Alice * Bob * OT Server All three have the same copy of the ''Lorem ipsum document''. Each of the end-users (i.e., Alice and Bob) indicate that they are synchronized with the OT Server. As edits are made by Alice or Bob, the operations are placed into an operation buffer. The state is changed from Synchronized to Waiting. When the server is ready, it accepts one of the operations that are awaiting processing from either of the editors (i.e., Alice or Bob). The edit operations are applied to the Server's version of ''Lorem ipsum docment'' and a virtual cursor of where changes have been made is kept on the server. The server then prepares an operation to be sent to all the editors. Each of the editors can collect the outstanding edits from the server and apply the edits to their own copy of ''Lorem ipsum document'' if necessary. If the operation is its own outstanding operation, then the operation is ignored (its already applied to the local document), the operation stored in the local Await buffer is removed and the next queued operation in the Ops buffer becomes the new Await Buffer value awaiting the OT Server's retrieval. If the operation taken fro mthe queue is not its own operation (i.e., an operation from Alice received by Bob), then the operation is applied to its own copy of ''Loren ipsum document''. When all the operations have been drained from each of the editor's operation buffer and there are no more operations stored in the Editor's quues, then everything returns to the initial state as depicted in the diagram. ==== To-Be Normative OT Server Architecture ==== The following diagram captures the normative "to-be" architecture using multiple OT servers (referred to as engines) connected together using DDS. Each editor (Alice and Bob) have their copy of the OT engine that is listening and publishing on DDS topics. The DDS QoS parameters are set so that one of the OT engines is the "master" and the others are redundant backups that only get used during a failover situation where one of the engines is down or the connection to it fails. {{ :to-be_ot_server_normative_architecture.png?800 | The "to-Be" OT server/engine Architecture.}} The QoS policies are defined in the OMG DDS Specification or can be found online at: [[http://community.rti.com/docs/html/api_c/group__DDSQosTypesModule.html | RTI QoS Policies ]] === Editor Buffer === ^QoS Parameter ^ Area ^ Value ^ | Durability | Volatility | | | History | Volatility | | | Reader Data Lifcycle | Volatility | | | Lifespan | Volatility | | | Entity Foctory | Infrastructure | | | Resource Limits | Infrastructure | | | Reliability | Delivery | | | Time based Filter | Delivery | | | Deadline | Delivery | | | Content Filters | Delivery | | | User Data | User QoS | | | Topic Data | User QoS | | | Group Data | User QoS | | | Partition | Presentation | | | Destination | Presentation | | | Destination Order | Presentation | | | Ownership | Redundancy | SHARED | | Ownership Strngth | Redundancy | 0..1,000,000 | | Liveliness | Redundancy | DDS_AUTOMATIC_LIVELINESS_QOS | | Latency Budget | Transport | | | Transport Priority | Transport | | === OT Ops Buffer === ^QoS Parameter ^ Area ^ Value ^ | Durability | Volatility | | | History | Volatility | | | Reader Data Lifcycle | Volatility | | | Lifespan | Volatility | | | Entity Foctory | Infrastructure | | | Resource Limits | Infrastructure | | | Reliability | Delivery | | | Time based Filter | Delivery | | | Deadline | Delivery | | | Content Filters | Delivery | | | User Data | User QoS | | | Topic Data | User QoS | | | Group Data | User QoS | | | Partition | Presentation | | | Destination | Presentation | | | Destination Order | Presentation | | | Ownership | Redundancy | | | Ownership Strngth | Redundancy | | | Liveliness | Redundancy | | | Latency Budget | Transport | | | Transport Priority | Transport | | === Editor Queue === ^QoS Parameter ^ Area ^ Value ^ | Durability | Volatility | | | History | Volatility | | | Reader Data Lifcycle | Volatility | | | Lifespan | Volatility | | | Entity Foctory | Infrastructure | | | Resource Limits | Infrastructure | | | Reliability | Delivery | | | Time based Filter | Delivery | | | Deadline | Delivery | | | Content Filters | Delivery | | | User Data | User QoS | | | Topic Data | User QoS | | | Group Data | User QoS | | | Partition | Presentation | | | Destination | Presentation | | | Destination Order | Presentation | | | Ownership | Redundancy | | | Ownership Strngth | Redundancy | | | Liveliness | Redundancy | | | Latency Budget | Transport | | | Transport Priority | Transport | | ===== References ====== - Semantics of Business Vocabulary and Rules (SBVR), Version 1.2, 2013, Object Management Group, [[http://www.omg.org/spec/SBVR/1.2|http://www.omg.org/spec/SBVR/1.2]] - On the Road to Regulatory Ontologies - Mobile Ad hoc Networking (MANET): Routing Protocol Performance Issues and Evaluation Consideration, January 1999, The Internet Society, RFC 2501, [[https://tools.ietf.org/html/rfc2501|https://tools.ietf.org/html/rfc2501]] ===== Glossary ===== ^ Acronym ^ Term ^ Definition ^ Reference ^ | | Angualr JS | | | | | Big Data | | | | CSS | Cascading Style Sheet |CSS is the language for describing the presentation of Web pages, including colors, layout, and fonts. It allows one to adapt the presentation to different types of devices, such as large screens, small screens, or printers. CSS is independent of HTML and can be used with any XML-based markup language.| [[http://www.w3.org/standards/webdesign/htmlcss | W3C HTML and CSS ]] | | CFR | Code of Federal Regulations | | | | | CoffeeScript | | | | COTS | Commercial Off-the-Shelf | | | | DDS | Data Distribution Service | | | | DOM | Document Object Model | | | | ECMA | ECMA Script | | | | | Hadoop | | | | GTCTC | Governance, Risk and Compliance Technology Centre | | | | HDFS | Hadoop Distributed File System | | | | HTML | Hypertext Markup Language | HTML is the language for describing the structure of Web pages. HTML gives authors the means to: \\ - Publish online documents with headings, text, tables, lists, photos, etc.\\ - Retrieve online information via hypertext links, at the click of a button. \\ - Design forms for conducting transactions with remote services, for use in searching for information, making reservations, ordering products, etc. \\ - Include spread-sheets, video clips, sound clips, and other applications directly in their documents. |[[http://www.w3.org/standards/webdesign/htmlcss | W3C HTML and CSS ]]| | HTTP | Hypertext Transfer Protocol | | | | | Java | | | | JS | JavaScript | | | | | Linux | | | | MANET | Mobile Ad hoc Networking | | | | NLP | Natural Language Processor | | | | | Node JS | | | | NWK | Node Web Kit | | | | | ontology | | | | OS | operating System | | | | OT | Operational Transformation | Operational Transformation (OT) is a technology for supporting collaborative computing functions and applications. OT has a rich set of collaboration capabilities and has been used to support a wide range of applications. | [[http://cooffice.ntu.edu.sg/otfaq/ | Operational Transformation FAQ]] | | OSX | Mac OS X | | | | Postgres | PostgreSQL | | | | RTI | Real-Time Innovations | | | | SBVR | Semantics of Business Vocabulary and Rules | | | | | ShareJS | | | | SME | Subject Matter Expert | | | | SQL | Structured Query Language | | | | TCP | Transmission Control Protocol| | | | | Ubuntu | | | | TinyMCE | Tiny Moxiecode Content Editor | | | | UDP | User Datagram Protocol | | | | | Vocabulary | | | | | WebHDFS | | | | | Windows | | | | XML | Extensible Markup Language | | | ===== License ===== The software developed for this project will fall under the MIT License Copyright. For reference the License follows: ---- The MIT License (MIT) Copyright (c) 2015 Jackrabbit Consulting, Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ===== Software ===== ==== Downloads ==== [[Instructions for Download]] ==== Source Code ====