Status: A cool bit of saturday night writing.
The Resource Description Framework (RDF) is a method for structuring information to support interoperation, application integration, and data longevity. Like XML, it is part of the puzzle of letting computers talk to computers: RDF provides a grammatical structure for constructing and composing simple knowledge statements in a machine-usable form.
When applications store and exchange data using RDF's structuring, the challenge of passing along knowledge becomes easier: all that's left is selecting a common vocabulary. The situation is somewhat like humans communicating about an obscure technical matter; they need to find a common technical vocabulary, but at least they are using the same sentence structures. Because RDF uses URIs as its "words", the web can help to establish that common understanding of vocabulary terms.
RDF was originally specified in RDF Model & Syntax and aimed at a somewhat more limitted range of applications. It is currently being refined by the RDF Core Working Group, which is producing a new set of specifications. The Primer is a good place to start.
Information in RDF is conceptually stored in "graphs", which are somewhat like databases or program data structures. To transmit a graph, it must be serialized as bytes or characters. RDF/XML is a standard serialization for RDF graphs as XML documents.
RDF/XML was originally specified by RDF M&S, which suggests it is the only RDF serialization. A _revised specification for RDF/XML_ is being developed.
Since RDF/XML is the only standard RDF serialization, it is often the default. Unfortunately, it has turned out to be surprisingly difficult to work with for some applications, so there is a demand for other serializations.
(This is only a partial list!)
There are several approaches:
Some tools and lists of tools: http://www.xmlhack.com/read.php?item=1703
This list would be too long and active to maintain, so instead here are some sites which maintain such lists:
http://www.ilrt.bristol.ac.uk/discovery/rdf/resources/#sec-tools http://xml.coverpages.org/rdf.html#software(This is only a partial list!) dmoz
The idea of structuring information as a directed labeled graph (sometimes called a "semantic network") appears to date at least to the Greek philosopher Porphyry (c. 234-305 A.D.) Charles S. Peirce (1909) brought them into the era of modern logic as existential graphs. Pat Hayes argued convincingly (in 1979, "The Logic of Frames") that such conceptualizations were equivalent to a subset of first-order logic, and this view has been codified in the current draft RDF semantics document (coincidentally also written by Pat Hayes).
RDF itself has been developed as a collaborative effort. [etc] OCLC link broken
This question arises when you have a choice of two or more URIs to use to refer to something RDF content you are authoring, or when you are considering introducing a new URI.
There seem to be three qualities of a URI which can make it work well in RDF:
See Hash and Slash for a tricky aspect to this.
If the URI functions as a normal web address it risks ambiguity as people start to use it to identify a source of web content as well as whatever it was originally intended to identify. (Of course, this is not a problem if the thing itself happens to be a web page or other traditional web resource.) There are two common approaches to addressing this problem, sometimes called "hash" and "slash":
The "hash" approach uses an http: URI with a fragment ID (separated by a "#" character, sometimes pronounced "hash"), like "http://www.w3.org/1999/02/22-rdf-syntax-ns#type". Here the full URI (sometimes called a URI-Ref) identifies an abstract property, while the non-fragment part "http://www.w3.org/1999/02/22-rdf-syntax-ns" identifies the associated web content. A potential drawback of this approach is that because fragment semantics are defined by the MIME content-type of retreived content, content-negotiation cannot safely be used to offer content in RDF along with other MIME types like text/html and application/xml.
The "slash" approach uses http: URIs which, during an HTTP operation, redirect with "302 Found" or "303 See Other" to the associated web content. The redirect (and the resulting change in the URI displayed in a browser's "Address" box) makes it fairly clear that the returned content has its own, separate URI.
Each of these approaches generally works and is deployed. Hash has conflicts with some kinds of content-negotiation; slash requires an extra HTTP round-trip to obtain the associated content. Some people have strong feelings about how URIs and the web are supposed to work which have sometimes make discussions of these issues difficult.
It's when you put something into the domain of discourse, like to make a ternary predicate, or talk about RDF statements.
See PH's message about complexities
Although its formal semantics define RDF as equivalent to the existential-conjunctive subset of first-order logic with no function terms and only dyadic predicates, the use of URIs may change matters.
The issue here is that a URI may be mutually understood to mean something more. ... OWL ...
This work is being done as part of the MIT/LCS DAML Project under the MIT/AFRL cooperative agreement number F30602-00-2-0593. This work is not on the W3C recommendation track and is not the product of a W3C working group or interest group.
Sandro Hawke
First: Sat Mar 22 18:16:15 EST 2003,
This: $Id: faq.html,v 1.1 2003/03/23 05:55:39 sandro Exp $