SlideShare a Scribd company logo
1 of 21
ROLE Technologies –
        A possible contribution to Apache Rave?

           Dominik Renzel                                Sten Govaerts
         Chair of Computer Science 5               Department of Computer Science
Advanced Community Information Systems (ACIS)   Katholieke Universiteit Leuven, Belgium
      RWTH Aachen University, Germany


                              Apache Hackathon
                       June 13, 2012, Utrecht, Netherlands


                                                     This work by Dominik Renzel is licensed under a
                                                     Creative Commons Attribution-ShareAlike 3.0 Unported.
                                                                                 © www.role-project.eu
ROLE Background & Motivation




                                     
Currently happening: significant shift in education
   From passive lectures to interactive (online) group work
   Online learning tools cherry-picked or handcrafted by educators & learners
   DIY motto “create, disassemble, repurpose“ applied to educational products
   Learners & educators create mash-up learning apps, lessons & processes
 More collaboration, personalization, freedom, effectiveness
 ROLE: Inherent DIY support using widget-based Personal Learning
  Environments

                                                                      © www.role-project.eu
ROLE Vision




                        • Empower learners to build their
      ROLE Vision         own responsive learning
                          environments



       Responsiveness
                        • Awareness and reflection of own
                          learning process



        User-Centered
                        • Individually adapted composition
                          of personal learning environment



                                                   © www.role-project.eu
ROLE Technologies – How to sustain?




                                      ?
                          ?




                                          © www.role-project.eu
The ROLE Sandbox (role-sandbox.eu)

 Public installation of ROLE SDK for development & testing purposes
 ROLE Reference Container for Widget-based PLE


 Space
   Widget List
   (add/remove)


   Member List
   (join/leave)

   Space Chat



   Widgets
   (max/minimize)


       Does this already remind you of Apache Rave?
                                                              © www.role-project.eu
ROLE APIs




 ROLE APIs
 How to make your widget communicate in real-time –
 The ROLE Interwidget Communication (IWC) API




                                              © www.role-project.eu
ROLE XMPP-based Real-time Communication & Collaboration
ROLE Interwidget Communication – Concept




                                           © www.role-project.eu
ROLE Interwidget Communication – Facts

 Message-based communication between widgets
 Two different forms
    Single-user-single-browser:
        Integration of local widget instances to full applications
        Realized with HTML5 Web Messaging (other mechanisms realizable, too)
    Multi-user-multi-browser:
        Remote user collaboration in real-time
        Realized with XMPP Publish-Subscribe
 Message types
    Events: what happened upon sending message
    Intents: what should happen on receiving message
    (Use of semantic descriptions in message representations)
 Context
    In general: XMPP Publish-Subscribe Channel
    ROLE Reference Implementation: ROLE Spaces

 Refers to Epic RAVE-25
ROLE Interwidget Communication – Client API


 Function             Description
 connect(callback) Connects the client to local interwidget communication.
                   After successful call, the client is able to publish and
                   receive intents. Received intents are passed to the
                   callback function.
 disconnect()         Disconnects the client from interwidget communication.
 publish(intent)      Publishes a JSON-encoded intent.

 Initialize ROLE IWC Client
 var iwcClient = new iwc.Client();
 iwcClient.connect(function(intent){
     // process intent
 });

 Publish ROLE IWC Intent
 iwcClient.publish(intent);


                                                                  © www.role-project.eu
ROLE IWC – Intent Message Format

  var intent = {
      "component": "",
      "sender":"bob@somewhere.org?http://widget.org/sender.xml",
      "data":"http://data.org/some/data",
      "dataType":"text/xml",
      "action":"ACTION_UPDATE",
      "categories":["category1","category2"],
      "flags" :["PUBLISH_GLOBAL", "own_flag"],
      "extras":{"key1":"val1", "key2":"val2"}
  };

  Google Android-like Intents
      component(*) (String) - the component name of a specific recipient widget
       (explicit intent) or the empty string to indicate broadcasting (implicit intent)
      sender (String) - sender & sender widget.
      action (String) - the action to be performed by receivers (e.g. ACTION_UPDATE)
      data(*) (String) - data in form of a URI (e.g. http://myresource.org/microblogs/1)
      dataType(*) (String) - the data type in MIME notation (e.g. text/html)
      categories (Array) - categories of widgets to process the intent (e.g. ["editor"])
      flags (Array) - flags controlling intent processing (e.g. ["PUBLISH GLOBAL"])
      extras (JSON) - auxiliary data (e.g. {"examplekey":"examplevalue“})
                                                                            © www.role-project.eu
Efforts in XMPP Community: XMPP over WebSocket




    XMPP over WebSocket Gateway (WXG)
           Based on "An XMPP Sub-protocol for WebSocket" (J. Moffit, E. Cestari)
           Jetty-based implementation (supporting RFC 6455)
           Source: https://github.com/hocken/wxg
    Web Client Library Extension (strophe.js)
           (Semi-)transparent BOSH/XMPP over WS
           Refers to Strophe Issue 68:
           Source: https://github.com/Gordin/strophejs
(XMPP over) BOSH vs. WebSocket


Property                 BOSH                     WebSocket
Connections              Two concurrent           One
Connection Persistence   Repeated open/close      Persistent
Transportable Data       Textual only             Textual, binary
Latency                  High                     Low
Package Overhead         High (180+ bytes for     Low (2 bytes for frame
                         headers per roundtrip)   headers)
Uptake                   High                     Low
XMPP Servers             Most                     Few
XMPP JS Libraries        All                      Only some experimental
Browser support          Most                     Few


      XMPP over WebSocket to obsolete BOSH with
       stable specifications and implementations
ROLE Interwidget Communication – Online Resources

 Documentation
    ROLE SDK API Docs (SDK Download)
    Sourceforge MediaWiki (Wiki Page)
    Overview Paper (PDF)
 Demonstration
    ROLE SDK Trailer (youTube Video)
    Demo Space in ROLE Sandbox: http://role-sandbox.eu/spaces/iwc
 Code
    Libraries
        Proxy Part (code)
        Client Part (code)
    Tools
        ROLE IWC Test Stub Widget (code)
    Demo Widgets (cf. Demonstration)
        Synchronized Video Player (code)
        Synchronized Map Navigation (code)
        Collaborative Sketching Widget (code)
        Real-time Shared Note-Taking (code)
                                                                     © www.role-project.eu
ROLE APIs




 ROLE APIs
 How to make widgets manage Linked Data resources –
 The OpenApp API




                                             © www.role-project.eu
OpenApp – Concept


 API for Linked Data-style resource management
 Everything is a Resource
      URI
      Representation
      Metadata
      Data
 Resources can have sub-resources
    Access to sub-resources filtered by type or relation to parent
 Special Resources
    Space is topmost resource in a space (shared)
    User is topmost personal resource (protected)
OpenApp – Client API


openapp.oo.Resource
      create                    getInfo
      del                       setInfo
      getSubResources           getMetadata
      refresh                   setMetadata
                                 getRepresentation
                                 setRepresentation
 Get current space & user as resources
var space = new openapp.oo.Resource(openapp.param.space());

var user = new openapp.oo.Resource(openapp.param.user());

 Get resource information (JSON object with key/value pairs)
space.getInfo(function(info) {
    alert(info);
});
OpenApp – Client API (Code Samples continued)


 Create data sub-resource under space
 space.create({
 Get space resource metadata "data",
     relation: openapp.ns.role +
     type: "my:data:namespace:uri",
     metadata: meta,
     callback: function(sub){
         //do something with new sub-resource
     }
 });


 Find sub-resources via relation and type
 space.getSubResources({
     relation: openapp.ns.role + "data",
     type: "my:data:namespace:uri",
     onAll: function(arr) { //alternatively use onEach
         //Do something with array of found subresources
     }
 });
OpenApp – Browsing Resources with the Index Page

 For any resource open index page with <RESOURCE_URI>/:index
CfP – ROLE Widget Enchantment Competition




                                            © www.role-project.eu
Visit the ROLE project page
                 role-project.eu
          Download the ROLE SDK
     sourceforge.net/projects/role-project
           Try the ROLE Sandbox
                role-sandbox.eu
    Enter the ROLE Widget Competition
      role-project.eu/WidgetCompetition
           Join ROLE on LinkedIn
      linkedin.com/groups?gid=1590487
Share your widgets in the ROLE Widget Store
              role-widgetstore.eu/



                                              © www.role-project.eu

More Related Content

Viewers also liked

JTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringJTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringDominik Renzel
 
Recruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsRecruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsMd. Shahriar Arefin
 
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Dominik Renzel
 

Viewers also liked (6)

35 line coding
35 line coding35 line coding
35 line coding
 
JTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringJTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements Engineering
 
Recruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsRecruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobs
 
Links of london
Links of londonLinks of london
Links of london
 
Introduction to SCORE
Introduction to SCOREIntroduction to SCORE
Introduction to SCORE
 
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
 

Similar to ROLE Technologies – A possible contribution to Apache Rave

Drupal 8 preview_slideshow
Drupal 8 preview_slideshowDrupal 8 preview_slideshow
Drupal 8 preview_slideshowTee Malapela
 
Vijay Mix Presentation
Vijay Mix PresentationVijay Mix Presentation
Vijay Mix Presentationvijayrvr
 
Developing With Openbravo Rl Eppt
Developing With Openbravo Rl EpptDeveloping With Openbravo Rl Eppt
Developing With Openbravo Rl Epptvobree
 
Drupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source AppDrupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source ApplittleMAS
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAnthony Chow
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open SourceBertrand Delacretaz
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookellamuralikrishnanookella
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesNicola Ferraro
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overvieweposthumus
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to KubernetesPaul Czarkowski
 
Analyzing data with docker v4
Analyzing data with docker   v4Analyzing data with docker   v4
Analyzing data with docker v4Andreas Dewes
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open SourceBertrand Delacretaz
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Trackvijayrvr
 
Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Bertrand Delacretaz
 
Pyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsPyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsAhmed Bessifi
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011Nick Freear
 
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpen Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpenAIRE
 
Introduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackIntroduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackAbderrahmane TEKFI
 
Linked services for the Web of Data
Linked services for the Web of DataLinked services for the Web of Data
Linked services for the Web of DataJohn Domingue
 

Similar to ROLE Technologies – A possible contribution to Apache Rave (20)

Drupal 8 preview_slideshow
Drupal 8 preview_slideshowDrupal 8 preview_slideshow
Drupal 8 preview_slideshow
 
Vijay Mix Presentation
Vijay Mix PresentationVijay Mix Presentation
Vijay Mix Presentation
 
Developing With Openbravo Rl Eppt
Developing With Openbravo Rl EpptDeveloping With Openbravo Rl Eppt
Developing With Openbravo Rl Eppt
 
Drupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source AppDrupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source App
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware community
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overview
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
Analyzing data with docker v4
Analyzing data with docker   v4Analyzing data with docker   v4
Analyzing data with docker v4
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Track
 
Vicky_Resume
Vicky_ResumeVicky_Resume
Vicky_Resume
 
Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)
 
Pyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsPyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOps
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011
 
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpen Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
 
Introduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackIntroduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStack
 
Linked services for the Web of Data
Linked services for the Web of DataLinked services for the Web of Data
Linked services for the Web of Data
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

ROLE Technologies – A possible contribution to Apache Rave

  • 1. ROLE Technologies – A possible contribution to Apache Rave? Dominik Renzel Sten Govaerts Chair of Computer Science 5 Department of Computer Science Advanced Community Information Systems (ACIS) Katholieke Universiteit Leuven, Belgium RWTH Aachen University, Germany Apache Hackathon June 13, 2012, Utrecht, Netherlands This work by Dominik Renzel is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported. © www.role-project.eu
  • 2. ROLE Background & Motivation  Currently happening: significant shift in education  From passive lectures to interactive (online) group work  Online learning tools cherry-picked or handcrafted by educators & learners  DIY motto “create, disassemble, repurpose“ applied to educational products  Learners & educators create mash-up learning apps, lessons & processes  More collaboration, personalization, freedom, effectiveness  ROLE: Inherent DIY support using widget-based Personal Learning Environments © www.role-project.eu
  • 3. ROLE Vision • Empower learners to build their ROLE Vision own responsive learning environments Responsiveness • Awareness and reflection of own learning process User-Centered • Individually adapted composition of personal learning environment © www.role-project.eu
  • 4. ROLE Technologies – How to sustain? ? ? © www.role-project.eu
  • 5. The ROLE Sandbox (role-sandbox.eu)  Public installation of ROLE SDK for development & testing purposes  ROLE Reference Container for Widget-based PLE Space Widget List (add/remove) Member List (join/leave) Space Chat Widgets (max/minimize) Does this already remind you of Apache Rave? © www.role-project.eu
  • 6. ROLE APIs ROLE APIs How to make your widget communicate in real-time – The ROLE Interwidget Communication (IWC) API © www.role-project.eu
  • 7. ROLE XMPP-based Real-time Communication & Collaboration
  • 8. ROLE Interwidget Communication – Concept © www.role-project.eu
  • 9. ROLE Interwidget Communication – Facts  Message-based communication between widgets  Two different forms  Single-user-single-browser:  Integration of local widget instances to full applications  Realized with HTML5 Web Messaging (other mechanisms realizable, too)  Multi-user-multi-browser:  Remote user collaboration in real-time  Realized with XMPP Publish-Subscribe  Message types  Events: what happened upon sending message  Intents: what should happen on receiving message  (Use of semantic descriptions in message representations)  Context  In general: XMPP Publish-Subscribe Channel  ROLE Reference Implementation: ROLE Spaces  Refers to Epic RAVE-25
  • 10. ROLE Interwidget Communication – Client API Function Description connect(callback) Connects the client to local interwidget communication. After successful call, the client is able to publish and receive intents. Received intents are passed to the callback function. disconnect() Disconnects the client from interwidget communication. publish(intent) Publishes a JSON-encoded intent. Initialize ROLE IWC Client var iwcClient = new iwc.Client(); iwcClient.connect(function(intent){ // process intent }); Publish ROLE IWC Intent iwcClient.publish(intent); © www.role-project.eu
  • 11. ROLE IWC – Intent Message Format var intent = { "component": "", "sender":"bob@somewhere.org?http://widget.org/sender.xml", "data":"http://data.org/some/data", "dataType":"text/xml", "action":"ACTION_UPDATE", "categories":["category1","category2"], "flags" :["PUBLISH_GLOBAL", "own_flag"], "extras":{"key1":"val1", "key2":"val2"} };  Google Android-like Intents  component(*) (String) - the component name of a specific recipient widget (explicit intent) or the empty string to indicate broadcasting (implicit intent)  sender (String) - sender & sender widget.  action (String) - the action to be performed by receivers (e.g. ACTION_UPDATE)  data(*) (String) - data in form of a URI (e.g. http://myresource.org/microblogs/1)  dataType(*) (String) - the data type in MIME notation (e.g. text/html)  categories (Array) - categories of widgets to process the intent (e.g. ["editor"])  flags (Array) - flags controlling intent processing (e.g. ["PUBLISH GLOBAL"])  extras (JSON) - auxiliary data (e.g. {"examplekey":"examplevalue“}) © www.role-project.eu
  • 12. Efforts in XMPP Community: XMPP over WebSocket  XMPP over WebSocket Gateway (WXG)  Based on "An XMPP Sub-protocol for WebSocket" (J. Moffit, E. Cestari)  Jetty-based implementation (supporting RFC 6455)  Source: https://github.com/hocken/wxg  Web Client Library Extension (strophe.js)  (Semi-)transparent BOSH/XMPP over WS  Refers to Strophe Issue 68:  Source: https://github.com/Gordin/strophejs
  • 13. (XMPP over) BOSH vs. WebSocket Property BOSH WebSocket Connections Two concurrent One Connection Persistence Repeated open/close Persistent Transportable Data Textual only Textual, binary Latency High Low Package Overhead High (180+ bytes for Low (2 bytes for frame headers per roundtrip) headers) Uptake High Low XMPP Servers Most Few XMPP JS Libraries All Only some experimental Browser support Most Few  XMPP over WebSocket to obsolete BOSH with stable specifications and implementations
  • 14. ROLE Interwidget Communication – Online Resources  Documentation  ROLE SDK API Docs (SDK Download)  Sourceforge MediaWiki (Wiki Page)  Overview Paper (PDF)  Demonstration  ROLE SDK Trailer (youTube Video)  Demo Space in ROLE Sandbox: http://role-sandbox.eu/spaces/iwc  Code  Libraries  Proxy Part (code)  Client Part (code)  Tools  ROLE IWC Test Stub Widget (code)  Demo Widgets (cf. Demonstration)  Synchronized Video Player (code)  Synchronized Map Navigation (code)  Collaborative Sketching Widget (code)  Real-time Shared Note-Taking (code) © www.role-project.eu
  • 15. ROLE APIs ROLE APIs How to make widgets manage Linked Data resources – The OpenApp API © www.role-project.eu
  • 16. OpenApp – Concept  API for Linked Data-style resource management  Everything is a Resource  URI  Representation  Metadata  Data  Resources can have sub-resources  Access to sub-resources filtered by type or relation to parent  Special Resources  Space is topmost resource in a space (shared)  User is topmost personal resource (protected)
  • 17. OpenApp – Client API openapp.oo.Resource  create  getInfo  del  setInfo  getSubResources  getMetadata  refresh  setMetadata  getRepresentation  setRepresentation Get current space & user as resources var space = new openapp.oo.Resource(openapp.param.space()); var user = new openapp.oo.Resource(openapp.param.user()); Get resource information (JSON object with key/value pairs) space.getInfo(function(info) { alert(info); });
  • 18. OpenApp – Client API (Code Samples continued) Create data sub-resource under space space.create({ Get space resource metadata "data", relation: openapp.ns.role + type: "my:data:namespace:uri", metadata: meta, callback: function(sub){ //do something with new sub-resource } }); Find sub-resources via relation and type space.getSubResources({ relation: openapp.ns.role + "data", type: "my:data:namespace:uri", onAll: function(arr) { //alternatively use onEach //Do something with array of found subresources } });
  • 19. OpenApp – Browsing Resources with the Index Page For any resource open index page with <RESOURCE_URI>/:index
  • 20. CfP – ROLE Widget Enchantment Competition © www.role-project.eu
  • 21. Visit the ROLE project page role-project.eu Download the ROLE SDK sourceforge.net/projects/role-project Try the ROLE Sandbox role-sandbox.eu Enter the ROLE Widget Competition role-project.eu/WidgetCompetition Join ROLE on LinkedIn linkedin.com/groups?gid=1590487 Share your widgets in the ROLE Widget Store role-widgetstore.eu/ © www.role-project.eu