Any suitable server 102 may be used in system 100, and for example, the server may be an IBM RS/6000 server. Also, the clients 104 of the system may be, for instance, personal computers, laptop computers, servers, workstations, main frame computers, or other devices capable of communicating over the network. Likewise, the devices of system 100 may be connected to the network using a wide range of suitable connectors or links, such as wire, fiber optics or wireless communication links. Distributed system 100 may include additional servers, clients and other devices not shown in
As mentioned above, in the depicted example, the devices of system 100 may be connected together via the Internet, which is a worldwide collection of networks and gateways that use the TCP/IP suite of protocols to communicate with one another. In the operation of system 100, server 102 provides data and applications to the clients. Among other functions, the server and the clients store semantic web statements such as RDF statements. For this reason, as depicted in
Any suitable mechanism may be used to store the RDF statements. For example, relational databases that may be used to store RDF statements are disclosed, in copending application no. (Attorney Docket POU920050098US1) for “Method And System For Controlling Access To Semantic Web Statements,” filed ______, and copending application no. (Attorney Docket POU920050099US1), for “Method And System For Efficiently Storing Semantic Web Statements In A Relational Database,” filed ______, the disclosures of which are hereby incorporated herein in their entireties by reference .
The present invention is directed generally to the distribution of such semantic statements. More specifically, the invention leverages existing JMS publish/subscribe technology (e.g. IBM Websphere Event Broker), represented at 106, to distribute RDF updates such that clients receive only the information they require. Updates include adding, changing or removing RDF statements.
In system 100, clients 104 listen for events using content-based message selection, a feature provided by the JMS standard. The server 102 publishes all events into the publish/subscribe cloud 106, allowing the brokers to discard events that do not match any client subscriptions. The example messages illustrated in
At step 310, the routine checks to determine if any JMS messages are pending. If no messages are pending, this step is repeated until a message is pending; and, when a message is pending, the routine moves on to step 312. At this step, the client checks to determine if the pending message indicates that an RDF statement has been removed. If this is the case, the statement is removed from the local RDF stores at step 314, and the routine returns to step 310.
If, at step 312, the pending message does not indicate that an RDF statement is being removed, then the pending message indicates that a statement is being added or modified, and from step 312, the routine proceeds to step 316. At this step, a time stamp on the message is examined. If, as represented at step 320, the timestamp shows that the update is obsolete, then the routine returns to step 310. If the message is not obsolete, then, at step 322, the local store is updated with the new statement information, and then the routine returns to step 310.
However, if at step 410, the request does result in a change, the routine moves on to step 414, and the request is processed and the data are returned. Then, at step 416, an update message is published for each statement modified, and the routine then returns to step 406.
In the operation of system 100, clients communicate with an RDF store server through a combination of synchronous web service operations and asynchronous JMS updates. This operation may be significantly complicated by statement-level access control lists, which restrict which clients are allowed to read which statements. This level of access control means that simple publish/subscribe cannot be relied on alone, because some application-level authentication and message filtering is needed. In addition, RDF statements are added, modified, and removed within the scope of transactions. This also complicates the scenario, since any particular client may only be allowed to see some of the statements involved in a transaction.
In system 500, clients 504 may connect to one of many update managers (most likely using web services over point-to-point JMS, e.g. IBM WebSphere MQ). After authenticating, the client specifies a pattern for statement updates of interest. These patterns may match the subject, predicate or object of a statement, or other metadata the server chooses to include in the updates such as the date and time the statement is created.
All statement updates are published, one at a time, by the store server, over an internal publish/subscribe broker cloud. The update managers subscribe to statement updates based on the patterns provided by their clients, and listen for all transaction completion messages. Each statement update is tagged with an ACL (Access Control List) identifier. Every time an update manger receives an update, it must ensure that the client is allowed to see the information before passing it on.
With reference to
If security policies allow some delay in enforcement after changes to the access control database, HTTP-style caching could be applied here. Update managers would be allowed to cache ACL information, depending on expiration times or get-if-modified operations supported by the ACL database and configured by the store server. It may be noted that with caching, clients connecting to different update managers may see different view of the data (corresponding to different versions of the access control data).
If, at step 706, there is a statement update pending, then the routine, at step 714, looks up the update ACL URI in access control database, and then, at step 716, determines whether the user has permission to read this update. If the user does have permission, then the routine proceeds to steps 720 and 722. At step 720, the update is sent to the user, via a point-to-point connection; and at step 722, the update transaction ID is added to a list of pending transactions. From step 722, the routine proceeds to step 710. If, at step 714, it is determined that the user does not have permission to read this update, the routine skips to step 710 and proceeds from there.
Any suitable update managers may be used in the practice of this invention. For example, suitable update managers are described in copending application no. (Attorney Docket no. POU920050059US1) for “System And Method For Tracking And Storing Semantic Web Revision History,” filed ______, and copending application no. (Attorney Docket no. POU920050060US1) for “Method And System For Selective Tracking Of Semantic Web Data Using Distributed Update Events,” filed ______, the disclosure of which is hereby incorporated herein in its entirety by reference.
With reference to
This architecture allows update mangers to filter incoming statement update messages immediately, without contacting any other node.
With particular reference to
At step 1114, the routine determines whether there is a statement update pending from the store server. If there is not, the routine proceeds to step 1116 where the routine determines whether there is an applicable transaction complete pending from the store server. If there is no such transaction complete pending, the routine returns to step 1110 and continues on from there. If there is such a pending transaction complete at step 1114, the routine moves on to step 1120, where the completed transaction is sent to the user via a point-to-point JMS connection, and this transaction is removed from the pending transaction list. After this, the routine returns to step 1110 and then proceeds from there.
If at step 1114, there is an update statement pending, the routine moves to step 1122, where a determination is made as to whether the user is entitled to this update. If the user is not entitled, the routine proceeds to step 1116; however, if the user is entitled to this update, the routine goes to step 1124. At this step, the update is sent to the user via a point-to-point connection. Then, at step 1126, the update's transaction ID is added to the pending transaction list, and from step 1126, the routine then goes to step 1116 and proceed from there.
While it is apparent that the invention herein disclosed is well calculated to fulfill the objects stated above, it will be appreciated that numerous modifications and embodiments may be devised by those skilled in the art, and it is intended that the appended claims cover all such modifications and embodiments as fall within the true spirit and scope of the present invention.