Tampilkan postingan dengan label Syntactic Web. Tampilkan semua postingan
Tampilkan postingan dengan label Syntactic Web. Tampilkan semua postingan

Oktober 01, 2013

Aplikasi Web di Masa Depan: Semakin Konvergen dengan Teknologi Agen

Agen bukan merupakan hal baru di dunia informatika. Sejak perkembangan AI (Artificial Intelligence - Kecerdasan Buatan), agen sebenarnya merupakan inti dari pembahasan. Jika dirunut sejak awal, kita bisa melihat teori agensi pada pemodelan ekonomi (principal-agents). Teori agensi pada pemodelan tersebut mendasarkan pada pemikiran bahwa principal selaku pemilik merekrut, menggaji, mempekerjakan agents untuk melakukan pekerjaan-pekerjaan tertentu. Tentu saja para agents tersebut harus mempunyai kecerdasan (keahlian) tertentu dan bisa bersikap serta mengambil keputusan (dalam ruang lingkupnya) terkait dengan tujuan kerjasama tersebut. Dalam kerjasama tersebut, dipastikan tidak akan muncul agency problems, yaitu konflik yang muncul karena perbedaan goals di antara mereka. Konsep inilah yang sebenarnya ingin dikerjakan pada AI. Sederhana dalam penggambaran, tetapi sangat sulit dalam implementasi. Agen itu sendiri bisa berupa agen tunggal serta MAS (Multi-Agent Systems). Agen tunggal tentu lebih mudah diimplementasikan. MAS merupakan topik yang sangat sulit (jaman dulu disebut sebagai DAI - Distributed Artificial Intelligence). Kompleksitas MAS disebabkan karena adanya interaksi antar agen.

Sementara itu, perkembangan teknologi jaringan yang sudah sampai tingkat konektivitas di seluruh dunia ternyata membuat perkembangan tuntutan pengguna aplikasi menjadi lebih kompleks. Ingat, semakin ringan dan semakin ingin dimanjakan, semakin sulit pekerjaan para pengembang aplikasi. Pada era ini, aplikasi pada dasarnya bisa kita bagi menjadi aplikasi yang headless serta aplikasi berbasis Web. Aplikasi headless adalah aplikasi yang tidak menggunakan user interface untuk si pemakai karena memang tidak dikhususkan untuk pemakai biasa. Pemakai menggunakan aplikasi ini, tetapi tidak menyadari jika aplikasi ini ada. Contoh sederhana aplikasi ini antara lain aplikasi crawler dari berbagai situs mesin pencari. Pemakai hanya perlu ke (misalnya) google, dan mencari kata kunci yang dikehendaki. Mekanisme dan penyediaan infrastruktur dari aplikasi tersebut kebanyakan tidak diketahui dan dipahami pemakai biasa. Aplikasi Web pada dasarnya menyediakan user interface untuk berkomunikasi dengan pemakai.

Apa keterkaitan antara kedua hal itu? Web menyedian berbagai macam sumber daya yang sangat melimpah ruah, mulai dari sumber daya yang hanya bisa dipahami oleh manusia (era Syntactic Web dengan HTML tanpa kandungan semantik) maupun sumber daya yang berupa sumber daya yang bisa "dipahami" mesin (dikenal dengan istilah sumber daya semantik - Semantic Web). Nah sekarang, kondisi seperti ini bisa memungkinkan orang untuk berpikir dalam kerangka teori agensi di atas. Pemakai menjadi pincipal, sementara agents akan berupa software: "saya ingin sesuatu dari Web, kerjakan dan berikan ke saya hasilnya" dengan seminimal mungkin intervensi ke software tersebut. Tugas para pengembang barangkali untuk memungkinkan hal-hal di atas bisa terjadi serta memungkinkan otomasi di Internet/Web seperti yang dicetuskan oleh Tim Berners-Lee pada tahun 2001:
  1. Merealisasikan software agent, dalam konteks ini sofware agent yang bisa berkomunikasi dengan si pemakai. Riset di bidang human-agent communication ini juga diperlukan, bersamaan dengan NLP (Natural Language Processing). Pemakai "berbicara" dan menyuruh agen untuk mengerjakan sesuatu on behalf of its owner. Pada konteks ini, penelitian yang dulu pernah dikembangkan oleh Terry Winograd menjadi penting (LAP - Language-Action Perspective).
  2. Merealisasikan aplikasi Web yang juga sebenarnya merupakan salah satu agen pada suatu masyarakat MAS. Agent ini mempunyai dua "muka", satu merupakan aplikasi Web dengan user interface HTML-CSS-JavaScript-etc, muka yang lain adalah agen. Agen ini merupakan wakil dari pemilik Web yang siap berkolaborasi dengan software agent dari pemakai. Komunikasi Agent-to-Agent ini juga merupakan hal yang kompleks dan merupakan salah satu standar yang dihasilkan oleh FIPA (http://www.fipa.org) berupa ACL (Agent Communication Language).
Nah, silahkan mulai bersiap-siap jika memang (berniat) terjun ke dunia pengembangan software. That should be pretty interesting. :p

Februari 04, 2013

An Overview of Rule-Based System

Rule-Based System has slowly become an important part of Web application. This fact has been realized by many since a tremendous amount of resources start to appear on the Web. As this high volume of data and information availability appear on the Web, confusion among Web users increased. This confusion is attributed to information flood, experienced by users. Not only information flood, a lot of different things and inconsistencies happened on the Web, not to mention too many Web browsers with different capabilities in implementing standards and specifications. Different services (see *anything* as a Service) offered on the Internet. All of those things basically trigger a simple question: how can we use Internet effectively and efficiently without drowning ourselves into those confusion? Can we use something like agent (in the real world) to represent us on the Internet and doing many things automatically without our intervention?

Those questions basically are simple questions but the answers have an immense impact and involve multidisciplinary approach. Surely I can not approach the answers from all disciplines, instead I will concentrate on my background in Web Engineering although I will also include other things as well when needed. We will focus our discussion into automated jobs -- done by software agent, be it in integrated into Web application, or as a stand alone headless software agent -- so that the benefit for human is real.

Currently, to answer those important questions, people and researcher from computer science and information systems make use of techniques and methods from Artificial Intelligence field. This advancement in Web is not necessarily a new phenomenon or new method or other new things. It is merely an application of many Artificial Intelligence methods and techniques to the new platform: Web. These things are different in Artificial Intelligence era where data, knowledge, and facts are integrated internally into the system, isolated from external access. On the Web, things are much more uncontrollable, even with many hard work in the field of standards and specifications (see W3C website for more info about this). Web provides data, information, knowledge, and facts, but they seem to be much more uncontrollable and provide bigger uncertainty level (resources probably exist today, but tomorrow they will disappear without notice, resulting DNS lookup failure or 404 HTTP status or probably 500 Internal Server Error). Therefore, working with Web means that we have to understand that we may not have 100 percent success and we may also hope that we still have some successful efforts.

To benefit its users, Web need to be provide resources. In this sense we may have three categories:

  1. Syntactic Web: this Web application is a kind of Web application which only provide resources for human consumable resources. It does not provide (or if provide, it will provide very minimal) machine understandable data. Users can understand what has been written on the Web browser application, but we may not use automatic agent to process them, provide automatic job processing for human.
  2. Semantic Web: this Web application provide machine understandable data format. It enables software agent to understand the data inside so that we may then use software agent to automate job processing.
  3. Pragmatic Web: this Web application provides not only semantic content, but also integrate context into the application, therefore it enables the software agent to understand context of the resources and then enable them to communicate further towards social commitments. Rule-based system is very important in this context.
Now we should understand the importance of semantic content and rules which are integrated into Web application. Therefore, it is important for Web developers to understand how to integrate rule-based system into the Web application. 

To understand the Rule-based system, until now, there are some important Rule-based System which may be used on the Web. 
  1. Deductive Databases System: this system works by making deductions (conclusion) based on rules and facts which is stored in a databases system. One example of this system is Datalog which is syntactically a subset of Prolog.
  2. Rule engines for triples: triple here is RDF data model (Subject-Predicate-Object). RDF is used to make a statement about resources, something like "Bambang creates an article on Pragmatic Web" which consists of resources "Bambang" and "an article on Pragmatic Web" with "creates" as the predicate. 
  3. Prolog-based System: introduces logic programming, took a restricted form of first-order logic.
  4. Production Rule System: in production rule system, the application will implements a notion set of rules and each rule has a condition and a consequential action.
  5. Reactive Rule System: in reactive rule system, the application has the ability to detect an event and then react to that event automatically.
  6. Knowledge-based System: provide knowledge base so that it enables software agent to make intelligent reasoning.
I will discuss those Rule-based system more detail later. Stay tuned.