The World Wide Web (more commonly known as the “Web”) is a distributed information space, in which each piece of information is a part of a system of interlinked hypertext documents that are accessed via the Internet. A web browser (commonly referred to as a browser) is a software application for retrieving, presenting, and traversing information resources (such as a web page, image, video or other piece of content) on the Web. An information resource is identified by a corresponding string of characters called its Uniform Resource Identifier/Locator (URI/URL). Pre-defined “hyperlinks” (traversible references) present in these information resources enable users to navigate web browsers to other related resources, and allow web users to retrieve, create, delete or update information stored in various web servers.
However, users can typically only create new information by entering data in forms, which are usually pre-defined. While this methodology facilitates access to well structured information and applications, users are typically not able to compose web services in new and/or customized ways that are not already specifically pre-determined and provided by the website's developer. Without allowing user customization via user-selected service composition, web services run the risk of either not satisfying user needs when only a relatively few functions are provided, or becoming too complicated by trying to satisfy the needs of all users when a large number of functions are pre-determined and provided. Moreover, web services designed in this manner are often incapable of interoperating with other web services with each other except in a very limited manner, i.e., following the predefined hyperlinks and forms.
Various solutions have been proposed and commercialized to increase the versatility of web browsers. Some solutions allow users to combine existing Web data and functions into new information. However, each of the available solutions suffer from substantial drawbacks. These may include, for example, requiring additional software installation (e.g., browser plug-ins), requiring special hardware (composition servers), or using complex service description languages that are unsuitable for most regular users.
As a solution to the problems noted above, a novel hyperlink pipeline model is proposed herein that allows a user to create composite web services by chaining atomic information resources into a pipeline. According to an aspect of the claimed subject matter, a user can chain desired hyperlinks into a new composite hyperlink that identifies and describes the composite service, which can be used in subsequent hyperlinks recursively.
According to these embodiments, tasks can be achieved quickly by such a hyperlink pipeline system. For example, a user can chain a hyperlink to photographs hosted online with another hyperlink to a map to display the photographs in corresponding locations on the map. In one or more embodiments, such hyperlink pipelines are automatically reusable when the reference resources change without breaking the service interfaces, and through modifications.
According to an aspect of the claimed subject matter a functional composition framework is provided to tie hyperlink pipelines with REST (Representational State Transfer) web services by combining semantic web technologies (e.g., Microdata) with REST design principles. An object-oriented mechanism is further provided in one or more embodiments to implement the interactive hyperlink pipeline composition in web browsers without any plug-ins.
According to embodiments of the present invention, a single resource is able to be associated with a plurality of service templates and each template can have a plurality of parameters using a special markup language Microdata+, such that a service template can be instantiated many times to form hyperlink pipeline instances in HTML documents. Embodiments of the present invention also allow a service template to contain a custom JavaScript function and a hyperlink pipeline to invoke these custom JavaScript function automatically when it is executed.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
Reference will now be made in detail to several embodiments. While the subject matter will be described in conjunction with the alternative embodiments, it will be understood that they are not intended to limit the claimed subject matter to these embodiments. On the contrary, the claimed subject matter is intended to cover alternative, modifications, and equivalents, which may be included within the spirit and scope of the claimed subject matter as defined by the appended claims.
Furthermore, in the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. However, it will be recognized by one skilled in the art that embodiments may be practiced without these specific details or with equivalents thereof. In other instances, well-known processes, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects and features of the subject matter.
Portions of the detailed description that follow are presented and discussed in terms of a process. Although steps and sequencing thereof are disclosed in figures herein describing the operations of this process, such steps and sequencing are exemplary. Embodiments are well suited to performing various other steps or variations of the steps recited in the flowchart of the figure herein, that not all of the steps depicted may be performed, or that the steps may be performed in a sequence other than that depicted and described herein.
Some portions of the detailed description are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits that can be performed on computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer-executed step, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout, discussions utilizing terms such as “accessing,” “writing,” “including,” “storing,” “transmitting,” “traversing,” “associating,” “identifying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The claimed subject matter is directed to a method and system for supporting multi-service hyperlink pipelines in web browsers that include customized hyperlink presentations and JavaScript functions. In particular, an architecture that provides customizable, multi-service, and multi-parameter hyperlink pipelines is described herein.
In a Representational State Transfer (REST) based hyperlink pipeline system, each hyperlink denotes a function (resource) that maps some incoming representation to some outgoing representation when the hyperlink is de-referenced. For example, a destination hyperlink D can accept a source hyperlink S to create a hyperlink pipeline P, denoted by function D(S), if and only if the outgoing representation of S matches the incoming representation of D. This functional framework can represent arbitrary recursive hyperlink compositions in pure URI syntax.
The functional composition framework also provides a distributed method to execute hyperlink pipelines, as illustrated in
According to such a framework, a hyperlink also needs to be able to verify the other hyperlink as a valid argument based on the service description of the hyperlinks. For this reason, a novel solution that provides client-side service description based on Microdata is described, such that the descriptions are embedded inside HTML pages and all the tests are carried out within a web browser without any network traffic. According to one or more embodiments, the client-side service description and test mechanism is configured to: 1) indicate where and what pipelines can be formed from which hyperlinks on a HTML page, (since not all hyperlinks can form valid hyperlink pipelines); and 2) allow web applications to customize hyperlink pipeline presentation, execution and management without sacrificing interoperability between hyperlink pipelines. To achieve these goals, a HTML5 Microdata language is described herein to annotate hyperlinks with a “pipeline factory” according to the UML class diagram in
As depicted in
According to one or more embodiments, a Microdata pipeline factory may be implemented to consist of one or more of the following properties:
a template property;
a type property;
a class property;
a max property; and
a pipeline property.
The template property may be implemented as, for example, implemented as, for example, a URI template with a destination variable {dest} that can be replaced by the destination URI and a source variable {src} that can be replaced by the source URI when the pipeline is composed. The type property may be implemented as a list of accepted media types for the outgoing representations of the sources. The class property may, according to various embodiments, be implemented as a list of accepted semantic classes for the outgoing representations of the sources. The max property may be implemented as the maximum number of accepted sources, with the default being set equal to 1, and if unbounded, set equal to −1, for example. The pipeline property itself may be implemented as a URI pointing to a HTML5 DOM (document object model) element which stores the pipeline element as a child element. The DOM element may also contain a special element which defines the pipeline template for the pipeline elements in it. In one embodiment, the default pipeline template is the HTML5<a> element.
The template property allows an application to customize the URI representation of functions if it does not want to use the default parentheses characters reserved by standard URI syntax. The pipeline property allows applications to use JavaScript and Cascading Style Sheets (CSS) to customize the presentation and execution of the created pipelines for consistent look-and feel. For example, an application can use a pipeline template to display the pipeline as an image and invoke some JavaScript code when the pipeline is clicked. An pipeline template may be expressed as, for example:
A factory annotation can be attached to the HTML code for hyperlink B in
According to one or more embodiments, hyperlink pipelines may be constructed interactively. Each hyperlink that can create a hyperlink pipeline can be annotated with Microdata. A generic constructor, called Factory Module, can be used to construct the hyperlink pipelines as illustrated below (
Construct (D: destination, F: factory, S: source, P: pipeline):
1. If D.max>0, continue; otherwise stop;
2. If S.type is subtype of F.type according to Internet Media Type, continue; otherwise stop;
3. If S.class is subclass of F.class according to rdfs:subClassOf defined by RDFS, continue; otherwise stop;
4. Create a DOM element P under F.pipeline element according to its template;
5. Set P.href=F.template where {dest}=D.href and {src}=S.href,
6. P.type=D.type, P.class=D.class, P.max=D.max−1, P.destination=D, P.source=S;
Within the general execution plan in
According to further embodiments, hyperlink pipeline states are also represented in the described framework. Hyperlink pipelines may have distinct corresponding states. For example, a hyperlink pipeline may be created in an “initial” state, and later transition to some intermediate state, e.g., “pending” or “in progress” when actuated/activated, then to a final “success” or “failure” state based on backend service executions. Alternatively, hyperlink pipelines may have only one state, depending on the service/action. For example, to attach some images to a graphical map, the images should appear on the graphical map immediately. In this case, the created hyperlink pipeline map may only have a final state (e.g., graphical map with images).
In one or more embodiments, a hyperlink pipeline may be created from a service associated with a resource.
In one or more embodiments, an instance (705) of the hyperlink pipeline can be created and/or activated by dragging (in a web browser) a graphical representation of the source hyperlink in 701 in proximity to a graphical representation of the destination hyperlink in 703. As depicted in
In one or more embodiments, the DOM object 807 may interact with JavaScript components responsible for constructing service instances from service template (815), combining service instances into hyperlink pipeline (817), and executing hyperlink pipelines (819). These components control the DOM and the pipeline model by updating them based on received events from the DOM object and invoking the custom JavaScript functions in the service templates.
In one or more embodiments, events (such as user interface actions) that activate the hyperlink pipeline construction from a service template are performed by a Control Module 809 in the web browser 801. The Control Module 809 contains a pipeline factory module 815 to construct a plurality of service instances from the service template in the pipeline model by executing one or more JavaScript functions.
In one or more embodiments, events (such as user interface actions) that activate the hyperlink pipeline construction from service instances are performed by a Control Module 809 in the web browser 801. The Control Module 809 contains a pipeline composition module 817 that combines multiple service instances to form hyperlink pipeline instances. The Pipeline Composition Module 817 performs a validation of the “type” of resources before combining them into a hyperlink pipeline. For example, a call pipeline that connects an accept-call service with a phone resource can be created because the accept-call service accepts a phone resource as a parameter, whereas a call pipeline that connects the accept-call service with another call resource will fail because it does not accept such a parameter. Finally, the hyperlink pipeline is executed by the Execution Module 819, which may invoke the JavaScript execution module 811 in the browser 801 for client-based implementations, or transmitted to a remote server 805 for execution in server-based implementations.
Relationships between the classes are also depicted in
In one or more embodiments, the classes depicted in
In one or more embodiments, the classes depicted in
When the service instance is in an active ready sub-state, the service instance may enter the Ready State 1005 and make and/or receive further operations (e.g., calls for the web real-time call service). When a call is started in the above example, the service instance may enter the Started State 1007 until such a time as the call is terminated (by user hang-up, system disconnection or failures). Once the call is terminated, the service instance returns to the Ready State 1005, and then returns to the Created State 1001 when an argument is removed from the service instance.
As depicted in
At step 1301, a service function receives—via user action—a hyperlink. In one of more embodiments, the hyperlink is received as a parameter of the service function. In one or more embodiments, the action may correspond to user-input received via a user input device on a graphical display of content presented in the web browser. In one or more embodiments, the service function is implemented by a processor executing a web browser in a client device. In one or more alternate embodiments, the service function is implemented in a server hosting web resources accessible to the client device. At step 1303, the service function instantiates a service method with an argument referencing the hyperlink and displays the service method graphically on a display device using the web browser. In one or more embodiments, the service function is implemented as an element of a UML class, and the service method is an instantiation of the service function class. At step 1305, the service method receives a second hyperlink (as a different argument) via a second user action. In one or more embodiments, the argument includes (stores) a reference to the hyperlink. In one or more embodiments, this step can be repeated for every other argument of the service method. As a service method may be the argument of another service method, a hyperlink pipeline constructed by this process may be represented by a tree of service methods (nodes).
At step 1307, the service method receives a third user action indicating an execution of the service method. In one embodiment, the third user action may consist of, for example, a hyperlink of the instantiated service method in the web browser. Subsequently, the service method is referenced to determine if the service method includes a JavaScript function. If the service method does not contain a custom JavaScript function, then the service method combines the hyperlinks in a pipeline and sends the combined hyperlinks to the server for remote execution (step 1309), before proceeding directly to step 1315. If the service method contains a custom JavaScript function, the method will evaluate the arguments (step 1311) to get the values of the arguments, before the service function evaluates the custom JavaScript function with the received values (step 1313). Finally, the service function will return and display the evaluated result on the HTML page (step 1315).
Computing environment 1400 may also comprise an optional graphics subsystem 1405 for presenting information to the computer user, e.g., by displaying information on an attached display device 1410, connected by a video cable 1411. According to embodiments of the present claimed invention, the graphics subsystem 1405 may be coupled directly to the display device 1410 through the video cable 1411. In alternate embodiments, display device 1410 may be integrated into the computing environment (e.g., a laptop or netbook display panel) and will not require a video cable 1411. The web browser described above with respect to various embodiments may be generated in the graphics subsystem 1405, for example, and graphically presented to the computer user through display device 1410.
Additionally, computing environment 1400 may also have additional features/functionality. For example, computing environment 1400 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computing environment 1400 also comprises an optional alphanumeric input device 1407, an optional cursor control or directing device 1407, and one or more signal communication interfaces (input/output devices, e.g., a network interface card) 1409. Optional alphanumeric input device 1407 can communicate information and command selections to central processor 1401. Optional cursor control or directing device 1407 is coupled to bus 1409 for communicating user input information and command selections to central processor 1401. Signal communication interface (input/output device) 1409, also coupled to bus 1409, can be a serial port. Communication interface 1409 may also include wireless communication mechanisms. Using communication interface 1409, computer system 1400 can be communicatively coupled to other computer systems over a communication network such as the Internet or an intranet (e.g., a local area network), or can receive data (e.g., a digital television signal). In one example, hyperlinks appearing in a rendered web page in the web browser displayed in display device 1410 may be actuated by the user via alphanumeric input device 1407 and/or cursor control or directing device 1407 to create a new service pipeline and/or instance of an existing service. The web browser may then be updated with the graphical representation of the ensuing service instance.
Although the subject matter has been described in language specific to structural features and/or processological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.