Technologies

The recent development in the web ecosystem has brought semantic web technologies and XMPP into the mainstream web development. The next chapters will summarize a number of these technologies, and their potential impact on your business and web presence.

These technologies form a synergistic platform for next generation scalable, distributed, lean, social, interoperable, and real-time Internet-based services.

Ajax

Ajax is the basic technology used to build rich client-side web applications. Ajax actually only means using Javascript (or Ecmascript) to dynamically retrieve XML documents and generating the user view on-the-fly for the browser. Javascript can also be used to capture events from the user, create animations, and can be used as a base for rich user interfaces very similarly to Adobe Flash and other technologies.

Just like Flash, and similar other technologies, Ajax can be used incorrectly to destroy the document-oriented structure of the web by removing the direct mapping between URLs and the corresponding documents. If the document is generated on-the-fly, it is perhaps not possible, or even reasonable to be able to refer to the document using its URL. This usage of Ajax and Flash often hampers web crawlers, and web browser bookmarking, and navigation functions.

We are not especially interested in the rich user interface aspects of Ajax in relation to the Web 3.0, but instead we are interested in XMPP and push-oriented connectivity Javascript enables for client-side web applications.

Using Javascript, a web application client can connect to an XMPP server using a method described in XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH). Because of the Javascript security model, the XMPP server must be deployed on the same server as the web site.

Javascript can therefore be used to build a rich client application using the browser as a platform, and XMPP as a truly networked connectivity solution.

[Wikipedia: Ajax]
[XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)]
[XEP-0206: XMPP Over BOSH]

OpenID

OpenID is a decentralized, Internet-scale single sign-on technology. Using OpenID, it is possible for people to identify themselves to one OpenID identity provider, and then refer all the Internet services they use to that identity provider, which can then guarantee that the user is who he or she claims to be. This frees the user from tens of different passwords and identification methods.

OpenID is built on existing single sign-on technologies, using web browser cookies to manage sessions, and using for example Kerberos to manage the actual identities and authentication. Any type of identification can be used in OpenID infrastructure, including email verification, biometrics, smart cards and standard passwords.

OpenID integrates to XMPP network so that any existing XMPP Jabber ID (JID) can be used as a basis for authentication. The procedure for this is described in XMPP standard XEP-0070: Verifying HTTP Request via XMPP. In practice, this authenticaion method can be used by registering a Jabber ID on any server, which authenticates you as you connect to it, and then registering your JID to an OpenID server that supports XEP-0070 authentication. One of such servers is given in the end of this chapter. Then, the user only needs to refer any OpenID supporting service to the OpenID provider, by supplying an OpenID URI linked to the OpenID provider to the service, and the OpenID provider then sends an XMPP request to your XMPP account to confirm your identity. As this request is replied by the user, the OpenID provider can be sure that the identification is valid, and then guarantees to the original OpenID supporting service that the user is who he or she claims to be. The only point where the user needs to actually identify through a password or other means, is when he or she starts the XMPP session.

Single natural person might have multiple OpenID identities, and therefore two separate OpenID identities are not guaranteed to represent two separate natural persons. In addition, there is no limitation that an identity needs to represent natural persons at all. This generality can be easily overcome using the fact that the OpenID identities can be serialized as URIs. These URIs can then be used as resources in a semantic RDF graph using for example FOAF and VCARD to associate different identities together to mean the same person.

Using OpenID URIs as RDF resources associated to identities also gives a nice anchoring to any semantic knowledge graph that can be used in web-based services. For example, it is trivial to associate any OpenID identities to any concepts that are relevant to the particular service, such as user's location, status, contacts or personal preferences.

[OpenID]
[Wikipedia: OpenID]
[XEP-0070: Verifying HTTP Requests via XMPP]
[The South African XMPP Federation OpenID Server ]

RDF

RDF has already been used all over the web for a quite a while now; The first specification of RDF's data model and XML syntax was published by the W3C as a Recommendation in 1999. RDF is currently manifesting itself most prominently in FOAF, RSS 1.0 and SIOC. A large number of different web publishing platforms, such as Wordpress use RDF in its different manifestations to publish rich, machine-readable metadata along with the web content. There are also many semantic crawlers and different kinds clients and browsers that can take full advantage of the published RDF metadata.

Basically RDF is a data model for describing knowledge about resources. Resource is any concept that has a URI. The knowledge is modeled as a network of subject-predicate-object tuples in RDF, so that the subjects and objects are resources, and are represented by the nodes in the network. The predicates are represented by the arcs connecting the resources together. This knowledge network, published in the web, is by its nature distributed, searchable, and enables user agents such as browsers and crawlers to make information available in most natural way for the user.

For example, this website is enriched with some RDF metadata using RDFa serialization, to make it available to a range of aggregator services. RDFa is a method for embedding RDF data model into an XHTML web page. Even using light, static hosting solutions, rich semantic metadata can be deployed on a website.

The power of RDF is in machine-readability. For example, imagine a scenario where a driver needs to find a route to the nearest restaurant. He could use his GPS navigator's statically embedded location database to make the search. These static databases are often incomplete, and out of date. Instead, the navigator could use a semantic crawler that is able to classify different location based service metadata and the associated location information in the web, and to combine this data to routing algorithms and user contextual information to automatically find the nearest restaurant according to the user's preferences.

Now, what if you didn't need to pay to publish your business information on all these static databases, all these new next generation devices one by one? In reality, you only need to publish this information in the web, in interoperable manner, and all these services, aggregators and mash-ups can then make use of the information freely. This is what a website actually is: Website is a platform for presence in the web, not fully utilized as a simple virtual frontend for your business.

Is your business area the development of the next generation service aggregators or mobile devices? Would you gain a valuable competitive value-add against your competitors' products by including live web integration with semantic crawling capabilities?

Please, feel free to contact Neter for further information.

[RDF at W3C]
[Wikipedia: RDF]
[Wikipedia: RDFa]

Social Networks

Web 2.0 was all about social networks, and it should not be very surprising that they still play a very dominant role in Web 3.0 also. The focal point of social networks in Web 3.0 is the URI. You only need an URI for an identity to make claims about that identity, using RDF. These claims can map together other identities that mean the same person, and make connections to other identities through different predicates, such as "foaf:knows".

Web 3.0 social networking is already supported mainly through FOAF by a number of social networking services, such as Facebook, LinkedIn and Google. Many of these services also provide XMPP integration, because these technologies have a very strong synergy together. Facebook is already starting to support semantic web knowledge map rooted on user identities in Facebook Open Graph. This includes, for example, dynamical ontologies for important life events.

The social networks that people have built on Facebook can be used in other services through Facebook Connect technology, and by creating a Facebook application. By using pre-created social connections, the users do not necessarily need to find all their friends all over and create new connections with them.

Twitter is a different kind of a social networking service. Basically Twitter is a short message broadcasting system. The strength of Twitter is actually its searching capabilities. These searching capabilities are leveraged by Twitter hashtags, which can be used to group updates from different people around a single theme, such as #neter. The web widget on this web site shows all the updates on Twitter with a hashtag #neter on them.

The newcomers in this field, Google Plus and Diaspora haven't yet amassed significant user base against Facebook and Twitter, but are still significant players in the ecosystem.

[Twitter]
[Facebook]
[LinkedIn]
[Twitter hashtags]
[Facebook application development]
[Facebook Open Graph Beta]

XMPP

XMPP was originally designed as an instant messaging protocol, but now it can be more accurately described as a general XML routing infrastructure and a platform for real-time social services.

XMPP is an open standard and it has a wide support among many different services and clients, most notably Google Talk.

XMPP core standards are defined as a series of IETF RFCs, and the core protocol is augmented by numerous extensions named as XEPs.

While many services can be deployed on an XMPP network using the strong peer to peer messaging capabilities only, the true strength of the infrastructure comes from the extensions which enable all kinds of services that are not easy to implement on top of HTTP alone. One example of such extension is the XEP-0060: User Location, which describes an interoperable way for clients to publish their geographical location in a real-time manner. This method is used for example in Nokia's mobile chat service.

[XMPP.org]
[Wikipedia: Extensible Messaging and Presence Protocol]
[Google Talk]
[Facebook and XMPP]
[XEP-0060: Publish-Subscribe]
[XEP-0080: User Location]