Exploring The Semantic Web - Web APIs and www.ProgrammableWeb.com

  • strict warning: Only variables should be assigned by reference in /courses/i202/public_html/f12/includes/common.inc(1696) : eval()'d code on line 1.
  • strict warning: Only variables should be assigned by reference in /courses/i202/public_html/f12/includes/common.inc(1696) : eval()'d code on line 1.
  • strict warning: Non-static method view::load() should not be called statically in /courses/i202/public_html/f12/sites/all/modules/views/views.module on line 879.
  • strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /courses/i202/public_html/f12/sites/all/modules/views/handlers/views_handler_argument.inc on line 745.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /courses/i202/public_html/f12/sites/all/modules/views/handlers/views_handler_filter.inc on line 589.
  • strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /courses/i202/public_html/f12/sites/all/modules/views/handlers/views_handler_filter.inc on line 589.
  • strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /courses/i202/public_html/f12/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc on line 149.
  • strict warning: Declaration of views_plugin_row::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /courses/i202/public_html/f12/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.
  • strict warning: Declaration of views_plugin_row::options_submit() should be compatible with views_plugin::options_submit(&$form, &$form_state) in /courses/i202/public_html/f12/sites/all/modules/views/plugins/views_plugin_row.inc on line 135.
  • strict warning: Only variables should be assigned by reference in /courses/i202/public_html/f12/sites/all/modules/social_media/social_media.module on line 248.

Our lecture last Thursday covered The Semantic Web and included a scenario from Tim Berners-Lee where a brother and sister use intelligent agents to schedule a medical appointment for their mother. This led me to think about the current environment of web and mobile applications where developers are addressing scenarios such as this and many others. In most cases, developers enable applications to communicate with other applications to create novel features, commonly called mashups, by implementing or using web APIs or Application Programming Interfaces. APIs however, are not mentioned in our lecture and according to Tim Berners-Lee are not yet considered part of The Semantic Web. 

Why? Tim Berners-Lee in The Semantic Web states that, 

"Many automated Web-based services already exist without semantics, but other programs such as agents have no way to locate one that will perform a specific function. This process, called service discovery, can happen only when there is a common language to describe a service in a way that lets other agents "understand" both the function offered and how to take advantage of it. Services and agents can advertise their function by, for example, depositing such descriptions in directories analogous to the Yellow Pages." 

At the time that this was written, 2001, web-based services had not yet popularized offering web APIs, but this clearly outlines why web APIs are not yet considered a part of the Semantic Web. Web APIs require a developer to design an application which communicates in a specific manner with a web API (XML or JSON). An intelligent agent cannot discover a web API because there is not yet a machine readable directory for service discovery with a standardized description of how a potential intelligent agent can use the web API and know the semantic meaning of the data. 

Additionally, in a linked data tutorial, How to Publish Linked Data on the Web, Freie Universität Berlin researchers state that Web 2.0 APIs make structured data accessible, but do not give the data a standardized access mechanism. They note that Linked Data can be more easily crawled by search engines, accessed using generic data browsers, and better enable links between data from different sources. The concept of Linked Data that they refer to can be further explored in their tutorial or at www.dbpedia.org, which was the center node in the diagram viewed during our lecture, http://wiki.dbpedia.org/Interlinking.

While there is not yet a machine readable exchange for intelligent agents to discover web-services, or web APIs, there is an website which calls itself a "database of over 2000 open web APIs," www.ProgrammableWeb.com. At ProgrammableWeb.com, developers can search for web APIs that will help them to build applications with features similar to Tim Berners-Lee's example of scheduling mom's medical appointment. ProgrammableWeb.com also lists thousands of applications considered to be mashups of web APIs that create novel features or functions. In the future, it might be possible for an ambitious engineer to build a translator that enables machines to discover and immediately use any web API, much like ProgrammableWeb.com does for human agents. This would bring web APIs into the realm of Linked Data and would bring the web another step closer to offering intelligent machine agents for human users.