- XML Reference Guide
- Overview
- What Is XML?
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Table of Contents
- The Document Object Model
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- DOM and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Implementations
- DOM and JavaScript
- Using a Repeater
- Repeaters and XML
- Repeater Resources
- DOM and .NET
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Downloads
- DOM and C++
- DOM and C++ Resources
- DOM and Perl
- DOM and Perl Resources
- DOM and PHP
- DOM and PHP Resources
- DOM Level 3
- DOM Level 3 Core
- DOM Level 3 Load and Save
- DOM Level 3 XPath
- DOM Level 3 Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- The Simple API for XML (SAX)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SAX and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- SAX and .NET
- Informit Articles and Sample Chapters
- SAX and Perl
- SAX and Perl Resources
- SAX and PHP
- SAX and PHP Resources
- Validation
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Document Type Definitions (DTDs)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Schemas
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- RELAX NG
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Schematron
- Official Documentation and Implementations
- Validation in Applications
- Informit Articles and Sample Chapters
- Books and e-Books
- XSL Transformations (XSLT)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XSLT in Java
- Java in XSLT Resources
- XSLT and RSS in .NET
- XSLT and RSS in .NET Resources
- XSL-FO
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XPath
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XML Base
- Informit Articles and Sample Chapters
- Official Documentation
- XHTML
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XHTML 2.0
- Documentation
- Cascading Style Sheets
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XUL
- XUL References
- XML Events
- XML Events Resources
- XML Data Binding
- Informit Articles and Sample Chapters
- Books and e-Books
- Specifications
- Implementations
- XML and Databases
- Informit Articles and Sample Chapters
- Books and e-Books
- Online Resources
- Official Documentation
- SQL Server and FOR XML
- Informit Articles and Sample Chapters
- Books and e-Books
- Documentation and Implementations
- Service Oriented Architecture
- Web Services
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Creating a Perl Web Service Client
- SOAP::Lite
- Amazon Web Services
- Creating the Movable Type Plug-in
- Perl, Amazon, and Movable Type Resources
- Apache Axis2
- REST
- REST Resources
- SOAP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- SOAP and Java
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- WSDL
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- UDDI
- UDDI Resources
- XML-RPC
- XML-RPC in PHP
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Ajax
- Asynchronous Javascript
- Client-side XSLT
- SAJAX and PHP
- Ajax Resources
- JSON
- Ruby on Rails
- Creating Objects
- Ruby Basics: Arrays and Other Sundry Bits
- Ruby Basics: Iterators and Persistence
- Starting on the Rails
- Rails and Databases
- Rails: Ajax and Partials
- Rails Resources
- Web Services Security
- Web Services Security Resources
- SAML
- Informit Articles and Sample Chapters
- Books and e-Books
- Specification and Implementation
- XML Digital Signatures
- XML Digital Signatures Resources
- XML Key Management Services
- Resources for XML Key Management Services
- Internationalization
- Resources
- Grid Computing
- Grid Resources
- Web Services Resource Framework
- Web Services Resource Framework Resources
- WS-Addressing
- WS-Addressing Resources
- WS-Notifications
- New Languages: XML in Use
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Google Web Toolkit
- GWT Basic Interactivity
- Google Sitemaps
- Google Sitemaps Resources
- Accessibility
- Web Accessibility
- XML Accessibility
- Accessibility Resources
- The Semantic Web
- Defining a New Ontology
- OWL: Web Ontology Language
- Semantic Web Resources
- Google Base
- Microformats
- StructuredBlogging
- Live Clipboard
- WML
- XHTML-MP
- WML Resources
- Google Web Services
- Google Web Services API
- Google Web Services Resources
- The Yahoo! Web Services Interface
- Yahoo! Web Services and PHP
- Yahoo! Web Services Resources
- eBay REST API
- WordML
- WordML Part 2: Lists
- WordML Part 3: Tables
- WordML Resources
- DocBook
- Articles
- Books and e-Books
- Official Documentation and Implementations
- XML Query
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- XForms
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Resource Description Framework (RDF)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Topic Maps
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation, Implementations, and Other Resources
- Rich Site Summary (RSS)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- Simple Sharing Extensions (SSE)
- Atom
- Podcasting
- Podcasting Resources
- Scalable Vector Graphics (SVG)
- Informit Articles and Sample Chapters
- Books and e-Books
- Official Documentation
- OPML
- OPML Resources
- Summary
- Projects
- JavaScript TimeTracker: JSON and PHP
- The Javascript Timetracker
- Refactoring to Javascript Objects
- Creating the Yahoo! Widget
- Web Mashup
- Google Maps
- Indeed Mashup
- Mashup Part 3: Putting It All Together
- Additional Resources
- Frequently Asked Questions About XML
- What's XML, and why should I use it?
- What's a well-formed document?
- What's the difference between XML and HTML?
- What's the difference between HTML and XHTML?
- Can I use XML in a browser?
- Should I use elements or attributes for my document?
- What's a namespace?
- Where can I get an XML parser?
- What's the difference between a well-formed document and a valid document?
- What's a validating parser?
- Should I use DOM or SAX for my application?
- How can I stop a SAX parser before it has parsed the entire document?
- 2005 Predictions
- 2006 Predictions
- Nick's Book Picks
Why is it that I can't simply tell my computer to take care of all of those little side items on my to-do list, like making appointments and buying Star Wars tickets?
I mean, why can't I just tell my computer to go out and find the nearest digital projection theater showing Star Wars Episode III: Revenge of the Sith and buy tickets for the midnight premiere?
Because the web was built for humans, that's why.
Seriously. If I do a Google search for "Star Wars digital theater", the first two results are an article about a theater in Thailand and a newspaper piece from 2002 about the technology used in Attack of the Clones. The third is a list of digital theaters that are theoretically going to show the movie I want to see, though, and my human brain can easily spot that.
But a computer can't, and that's the problem that the Semantic Web aims to solve. Oh, sure, finding Star Wars tickets may seem trivial to you, but the tehcnology that could make it possible for a computerized agent to take on this task can also make it possible for it to, say, find a doctor on your insurance plan and make an appointment that doesn't conflict with meetings already on your schedule, taking into account driving time and traffic. Or analyze purchase information from multiple wholesalers and retailers to identify new trends. Or figure out what meal your boss is likely to enjoy when he comes to your party next week, and what kind of wine to serve with it.
Sounds like a major artificial intelligence project, doesn't it? Well, it doesn't have to be. When you come right down to it, computers could figure all that out, if they had the right information to start with, and that's the goal of the Semantic Web project.
For example, let's say the agent could figure out, from your boss's blog, that he likes fish. If it also had a knowledge base that told it that white wine goes well with fish, and a list of white wines, it could, under the right circumstances, recommend several different wines that were listed in the inventory of the beverage store you pass on your way home from work.
The set of rules defining these relationshipts is called an "ontology".
An ontology, when we're talking about the Semantic Web, is a collection of facts and relationships that can be analyzed by a "reasoner". For instance, if we look at the theater example, we have several classes to look at, such as:
- Movie
- Theater
- MovieHouse
- Seat
- Showing
- Projector
- Tickets
(Some of you may have noticed my use of the word "classes". As we'll see next week, developing an ontology is similar to developing an object-oriented system, with classes and individuals rather than classes and objects.)
We can create relationships between these classes, such as specifying that a MovieHouse houses one or more Theaters, and that a Theater has exactly one Projector. We can also create sub-classes, such as a DigitalProjector sub-class of Projector.
An ontology codifies these relationships in a way that the reasoner can understand. Next week we'll talk more about developing an ontology, but for now let's concentrate on how these relationships can be used.
Say we know the following:
- AMC Pleasure Island houses Theater7
- Theater7 uses Projector1138
- Projector1138 is an individual of class DigitalProjector
- The DigitalProjector class has a projectionType of DIGITAL
- Showing2187 is an individual of class Showing with showingDate=May 18 at midnight
- Star Wars Episode III: Revenge of the Sith is an individual of class Movie
- Showing2187 will present Star Wars Episode III: Revenge of the Sith
- Showing2187 will talke place in Theater7
From these facts, we can draw the conclusion that since Showing2187 takes place in Theater7, and Theater7 uses a digital projector, that Showing2187 is a digital showing. Following the chain in both directions, we can make the inference that:
- AMC Pleasure Island has a digital showing of Star Wars Episode III:Revenge of the Sith at midnight on May 18
Of course, very little of this information is actually available on today's web, and what is available isn't in a form that a computer can understand. In the Semantic Web, on the other hand, this information would be available and machine readable. One example of how this can work is the biography page of Semantic Web researcher Professor James A. Hendler, where the page contains both a machine-readable version of his biographical information and a human-readable version. View the source code of the page to see how this works, but the short explanation is that the machine-readable version is XML data that doesn't show up in the browser, while the human-readable version is simply HTML. Another option is to create the actual ontology to define the relevant classes, and then use markup to identify individuals within the normal HTML page.
Different schemes for making this information available exist. The Hendler page uses a proposal called SHOE, and the W3C's approach is an RDF language called OWL. Next week we'll start looking at creating our own ontology.