Resource Description Framework (RDF)http://en.wikipedia.org/wiki/Resource_Description_Framework
What's so special about RDF?
Hierarchical vs. Relational DatabasesBack when dinosaurs, err, IBM Mainframes ruled the land, everyone used hierarchical databases (if they used a database). IMS is the most well known.
IBM designed IMS with Rockwell and Caterpillar starting in 1966 for the Apollo program. IMS's challenge was to inventory the very large Bill of Materials for the Saturn V moon rocket and Apollo space vehicle.
How many of you use hierarchical databases today? How many use XML and relational databases? Strange considering that XML maps directly to a hierarchical database and certainly doesn't map directly to a relational database. It is also interesting to note that relational databases take a lot more clever software and horsepower to get reasonable performance in doing all the joins and indexing and copying needed to provide a coherent view of the data from all the deconstructed n-tuples, err, rows, of data.
The reason relational databases, and SQL in particular, have succeeded in spite of the apparent "complexity" (compared to storing the data in a way that conveniently matches the application's model) is because of what happens when applications change and when the need to reuse and repurpose the data arises.
RDF schemas have that same relationship with XML schemas. RDF represents the data as n-tuples which are just like rows in a relational database. That requires the same sort of normalization that is needed for relational database modeling, rather than encouraging the willy-nilly hierarchical models supported by XML Schema, and is thus responsible for the "complexity" that has garnered the scorn of so many XML hackers, err architects, who "just want to get the job done".
That mindset is what led to RDF being dropped in RSS 2.0 and Atom. RSS actually stands for RDF Site Summary (RSS 1.0), not Really Simple Syndication (RSS 2.0 & Atom).
But what happens when application designs change? And what about reusing and repurposing the data? These are things in great demand in the Web.
Open World Model
But RDF is more than a relational database, as it is tailored to the needs of the World Wide Web. In particular it is based on an "Open World Model" (aka OWA rather than "Closed World Model" (CWA), and also expects that data may arrive as a chaotic, multi-valued, arbitrary graph.
But if you like SQL, that is good news, because you can use SPARQL which takes all that chaos and makes it as easy to use as a relational database. Actually easier because there is a natural fit for graphs and trees (like XML Schema and Java Persistence) which the tables of relational databases are not.
ArticlesSee also AboutSemanticWeb.
See also SemanticDesktop.
The world's data is mostly *not* in RDF. Hence an essential aspect of applying RDF is conversion and mapping with other formats. See also WebPageScraping.
Piggy-Bank is a Firefox extension that makes RDF accessible in a convenient way: http://simile.mit.edu/piggy-bank/
Bloged is "A very simple Blog Editor": https://bloged.dev.java.net/Fedora Object Repository project originated the "info" URI scheme (INFO URI FAQ). It looks like a good scheme for concepts that don't have a dereferenceable site.
FOAF is very popular.
Other popular vocabularies include RSS, DOAP, geoURL.
Mozilla/Firefox also make significant use of RDF.
- "SKOS Core is a model and an RDF vocabulary for expressing the basic structure and content of concept schemes such as thesauri, classification schemes, subject heading lists, taxonomies, 'folksonomies', other types of controlled vocabulary, and also concept schemes embedded in glossaries and terminologies."
- The myGrid Ontology
- The myGrid ontology describes the bioinformatics research domain in DAML, RDF, and OWL.
Dave Beckett's Resource Description Framework (RDF) Resource Guidehttp://planetrdf.com/guide/
Jena (from HP) is one of the most popular RDF stores: http://jena.sourceforge.net/
Sesame is reputed to be faster than Jena: http://www.openrdf.org/
Nifty use of Java annotations to generate RDF: http://blogs.sun.com/roller/page/bblfish?entry=java_annotations_the_semantic_web
RDFReactor converts RDF Schemas into Java classes: http://rdfreactor.ontoware.org/
RDFX consists of several RDF tools for Eclipse: http://rdfx.org/
JRDF (Java RDF) http://jrdf.sourceforge.net/
The Redland RDF Application Framework is extensive and in C: http://librdf.org/
Redfoot is a Python-based RDF "operating system".