Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
App-data vocabulary
Vocabulary used by TemplateContext to describe JavaScript to be invoked by the browser extension either on the page the browser user is currently looking at, or in a background thread. Used by Template vocabulary. Part of the Persona Data Model 2.0
Contents
Files
- Most recently published
- SVN source: app-data.owl
UML Overview
Classes
AppParams
An AppParams instance is the value of an AppData's params
attribute. It is a set of attributes and values used to initialize the app. Note: these attribute/values are combined with those derived from the AppData's entityParam
.
CDEScript
A Connector Data Engine script. The data is a JSON document consumed by the engine. If necessary the engine is completely or partially replaced by customJS.
- 0..1 customJS
- 1..1 data
- 0..1 skos:prefLabel
- 1..1 version
CDEScript SubClasses:
- DataSyncScripts:
- Fill: General pupose script that attempts to fill any non-login form.
- Scrape: General pupose script that attempts to scrape non-login related data (e.g. by hooking the formSubmit URL).
- EmailScripts:
- ChangeEmail: Script to change the user's email address at this site.
- Subscribe: Script to subscribe the user from site's promotional emails when creating an explicit account is not required.
- Unsubscribe: Script to unsubscribe the user to site's promotional emails on sites where no account is required to do so.
- LoginScripts:
- IsLoggedIn: Script to determine if user is logged in.
- Login: Script to auto-login the user at this site.
- Logout: Script to log out the user at this site.
- RegisterScripts:
- Register: Script to register the user at this site.
HasWebsiteFacade
A set of attributes that summarize the capabilities of a template:ConnectionTemplate that has a template:Participant that is a WebsiteFacade and associated scripts.
- subClassOf template:ConnectionTemplate
- 0..1 hasEmailScripts
- 0..1 hasRegisterScripts
- 0..1 hasLoginScripts
- 0..1 hasDataSyncScripts
JavaScript
Description of a JavaScript application to be executed in the user's browser by the browser extension.
- 0..1 skos:prefLabel
- 1..1 version
- 1..1 code
ManagedJS
Description of a JavaScript application fetched from an external service and executed in the user's browser by the browser extension.
- subClassOf: JavaScript
- 1..1 appId
- 1..1 description
- 1..1 eventHandlerURL
- 1..1 adminURL
- 1..1 serviceType
- 1..1 serviceURL
- 0..N hbxFunctionsEnabled
Overlay
JavaScript app that does web augmentation as an overlay to the current page the user is looking at in their browser.
- subClassOf: ManagedJS
- 0..N sites
- 0..1 params
- 0..N entityParam
HasWebsiteFacade Attributes
hasDataSyncScripts
This context contains a participant WebsiteFacade ContextPrototype that has a set of data sync related scripts.
- domain: HasWebsiteFacade
- value: xsd:boolean
hasEmailScripts
This context contains a participant WebsiteFacade ContextPrototype that has a set of email related scripts.
- domain: HasWebsiteFacade
- value: xsd:boolean
hasLoginScripts
This context contains a participant WebsiteFacade ContextPrototype that has a set of login related scripts.
- domain: HasWebsiteFacade
- value: xsd:boolean
hasRegisterScripts
This context contains a participant WebsiteFacade ContextPrototype that has a set of auto-registration related scripts.
- domain: HasWebsiteFacade
- value: xsd:boolean
WebsiteFacade Attributes
login
View-builder structure that defines the attributes required to login to this site.
- domain: WebsiteFacade
- value: view-builder:Group
registration
View-builder structure that defines the attributes required to register with this site.
- domain: WebsiteFacade
- value: view-builder:Group
script
CDE Script
- domain: WebsiteFacade
- value: CDEScript
CDEScript Attributes
customJS
For sites where the general purpose CDE won't work, use this JavaScript.
- domain: CDEScript
- value: JavaScript
data
Connector Data Engine script (JSON document).
- domain: CDEScript
- value: xsd:string
version
A human readable version number.
- domain: CDEScript
- value: xsd:string
JavaScript (and subClasses) Attributes
adminURL
The URL of a admin page to load into PDS portal.
- domain: JavaScript
- value: xsd:anyURI
appId
Uniquely identifies the app within the "developerId" namespace. In other words the combination of the devID
and the appId
is globally unique. When using Kynetx KNS this is the ruleID with special constraint that this ruleID is globally unique.
- domain: ManagedJS
- value: string
description
A human readable description of the app. Note: If appServer == http(s)://init.kobj.net, then the KNS "describe" API can be used by a context provider implementation to provide this attribute value.
- domain: ManagedJS
- value: string
entityParam
The name of an attribute (e.g. p:postal-code
) of a Person within a context associated with this App-data object. The value of this named attribute of the person is used as a parameter to the app-card's app.
- domain: Overlay
- value: URI
eventHandlerURL
The URL of JS that provides specific handlers for certain events in a context’s lifecycle including: onImport, onDelete, onEnable, onDisable, onExport
- domain: ManagedJS
- value: URI
hbxFunctionsEnabled
The list of HBX functions that the JS functions associated with this app-data are allowed to call.
- domain: ManagedJS
- value: string one of: {"delExAttrbutes" , "getExAttributes" , "getSuggestions" , "setExAttributes"}
params
A set of attributes used to initialize the app.
- domain: Overlay
- value: AppParams
serviceURL
The URL of the JS to fetch and execute.
- domain: ManagedJS
- value: URI
serviceType
If value is "kynetx" then the browser extension that will inject the Javascript for this app-card should construct a Kynetx-compatible <script> block and call an initialization URL based on the value of the appService
attribute.
- domain: ManagedJS
- value: string whose value is one of ("kynetx", "higgins").
sites
This is not a list of specific URIs, it is a list of strings to match in the domain name part of a URI. So urn:google would fire on maps.google.com, www.google.com, www.googleismyfavoritesite.com. For Kynetx-powered cards (i.e. if appServer = http[s]://init.kobj.net"), the values of this attribute should be dynamically fetched using the 'dispatch' method at URL: [1]<appId>.
- domain: Overlay
- value: string
version
A human readable version of the app. Note: If appServer == http(s)://init.kobj.net, then the Kynetx KNS "describe" API can be used by a context Provider implementation to provide this attribute value.
- domain: JavaScript
- value: string
Related Person attributes
Person attributes consumed by a ManagedJS.
enabledSites
The URLs of sites that the user has enabled the app to run on. Note that this augments the appSites value provided by the app developer which indicates the set of sites the app was designed to run on.
- value: boolean
disabledSites
The URLs of sites that the user has disabled the app from running on.
- value: xsd:anyURI
appEnabled
If true run this app
- value: xsd:anyURI
Example WebsiteFacade template context
ManagedJS Processing Model
Invoking Javascript
The Higgins browser extension is responsible for invoking the app/Javascript for all app-data contexts. This is done three ways. If appJS is not nil, then its value IS the app to invoke. If the appJS is nil, then the appServiceType indicates whether a Kynetx-style KNS invocation should be done or an (as yet undefined) Higgins-style invocation from some Higgins-hosted web service should be done. In the above example the appServiceType = kynetx so a KNS invocation will be done.
App/rule Id parameter
In the non-appJS (i.e. kynetx and/or azigo cases) the appId is required to specify which app (Javascript program) should be run. In the above example the appId (called a rule id by KNS) is "1024".
Before the Javascript is invoked on a given Web page HBX must determine for each AppDataContext if the current page is one that matches one or more card's site list.
Gather parameters to the Javascript
The browser extension and supporting code must implement the following algorithm to gather all necessary parameters to the Javascript function:
- Get the value of all attributes of the entity of the "appParams" attribute of the context object (ignoring rdfs:comment, rdf:label attributes, rdf:type, etc.).
- Get the value of all attributes of the main p:Person entity that are named in the context object's entityParam attribute value(s).
Making parameters/values available to the app (Javascript)
How parameters are inserted varies by service type. Here is how it is done for a "kynetx" serviceType:
var KOBJ_config ={ "rids" : ["1024","xyz123"], "1024:dataset" : "aaawa", "1024:dataset" : "ebates", "1024:favorite-song" : "Billy Joel: The Piano Man", };
This tells kynetx to run rules 1024 and xyz123, and for rule 1024, use dataset=aaawa and dataset=ebates. Note that each appParam value is namespaced by the appId (aka rule id, or rid) to which it is associated.