ResourceDescriptionFramework is a graph-based model for describing Internet resources (like web pages and email messages), and how these resources relate to one another. It can be considered as a means of representing a SemanticNet. It can be represented in a number of ways, using ExtensibleMarkupLanguage or RdfTriples. See PracticalRdf for a discussion of the alternatives. Part of the SemanticWebLayerCake described in the ExplorersGuide (to the SemanticWeb).
More information on RDF is available at http://www.w3.org/RDF/.
The EswWiki is all about the SemanticWeb and RDF: http://esw.w3.org/topic/FrontPage
How is this related to RichSiteSummary (RSS)?
"RSS is an acronym for RichSiteSummary and also for RdfSiteSummary and they aren't the same thing. Do you agree?" -- PaoloCastagna
Moved from RdfPrimerOutline
A document being done by SeanPalmer and AaronSwartz.
Narrative: Boss says we need an RDF export for our sprockets right away.
Why should I be using RDF anyway? What's this document going to tell me?
Introduction to basics of RDF.
Introduction to URIs and Resources.
Introduction to uses of XML and self-describing documents.
Writing out information and data into RDF formats.
RDF is developed by the W3C, but there's a large independent
community, lots of apps and implementations. (Lots of pointers
to related material.)
N.B. From here on down, it would be suitable to segue into the RDF Cookbook stuff; once they are able to deal with rudimentary serializations concepts, it should be a simple matter of guiding them through the rest.
- Introduction to developing schemas.
- More advanced stuff with DAML and WebOnt.
- Proof and digital signatures.
Online Query example (uses PrologLanguage) - see http://www.w3.org/1999/11/11-WWWProposal/atagdemo.
RDF is generally loaded into what SemanticWeb folk call a "TupleStore."
Around here, it seems to be called a "TupleSpace." - No, in fact a TupleSpace is something quite different, to do with sharing memory between different computer processes. -- JohnFletcher
Basically, a TupleStore is a gigantic graph. See RdfTriples.
RDF describes a graph. The graph consists of nodes connected by edges. When you describe the graph, you do it in triples. That is, you do it like this: (Node A)----(is connected by edge E)----(to Node B). See? Three things, making a triple. "A,E,B." It's also called a tuple.
Together, a bunch of triples/tuples describe a graph.
ALL data, in the entire world, can be described with a graph. That is: a graph is the most generic data structure in the world. Think about it: All data represents stuff connected to other stuff. A graph isn't necessarily the most efficient way to do it, but it's a pretty generic way to do it.
Why is RDF important?
Because it's easy to merge.
If you have two graphs, it's easy to automatically snap them together.
Why is merging data together important?
I haven't seen the canonical reasons "why," but here are some reasons.
For instance, RSS v1 data is in RDF. If you want to extend the information there, you can just extend it with RDF. It'll "just work." Anything that knows how to interpret your additional graph nodes will be able to figure out what's going on. Anything that doesn't will (if it's reading the RDF right) just ignore it.
-- LionKimbro
Weaknesses:
Like everyone else, I wrote a brief introduction to RDF [http://slashdot.org/~Quantum%20Jim/journal/94721]:
A Brief Introduction to the Resource Description Framework
Note: The following is a draft. Will revise and webify. ASCII art is formatted for 80 character lines.
Definitions
RDF is a language framework for describing directed graphs. First, some definitions:
Example Graphs in Pictures
Here's a graph composed of only one statement:
----------- predicate ----------
| subject |--------------->| object |
----------- ----------
A subject node for one statement can be the object node of another statement:
----------- predicate ----------- predicate2 -----------
| subject |--------------->| object1 |---------------->| object2 |
----------- ----------- -----------
Node and Arrow String Values
Now each node can have a string value:
Note that every predicate MUST have a URI value; they can't be blank or arbitrary strings. It is also a VERY BAD IDEA to let predicates end with anything other than the characters a-z, A-Z, or 0-9 (that is, the end of the uri SHOULD be a valid xml name).
URI Examples
Here are some examples of URIs that could be a subjects, predicates, or objects. There is no way of knowing in isolation which is which. Each URI is DIFFERENT (even if they point to the same thing on the web).
If the URIs are all predicates, then 1, 3, and 5 are formatted best. Here are some real-world examples of predicates:
Here are some example strings that could be literals:
Note that predicates can be objects. Thus RDF is capable of representing second-order-logic statements.
Datatypes
Literals can also have a property called its datatype. For example, the literal string "47" is also an integer, so it could be described by a datatype that means integer. This isn't required, of course, and many literals have no defined datatype.
The datatype is like a predicate and can only be a URI. Here are some real-life examples of datatypes:
Review of Values of Nodes and Arrows
In review:
Graphs as Databases
Graphs can be thought of as collections of statements, and statements can be thought of as subject/predicate/object tuples. I tend to think of statements as English sentences and graphs as paragraphs or stories. The analogy holds up pretty well.
Graphs can also be looked at as tables in a database. Here's an example (First set is the format):
Subject
Predicate
Object
(Datatype) .
http://example.com#subject1
http://purl.org/dc/elements/1.1/creator
"Jimmy"
http://www.w3.org/2001/XMLSchema#string .
http://example.com#subject1
http://purl.org/dc/elements/1.1/creator
"John" .
http://example.com#subject1
http://purl.org/dc/elements/1.1/creator
http://example.com/subject2 .
http://example.com/subject2
http://purl.org/dc/elements/1.1/creator
"Jimmy"
http://www.w3.org/2001/XMLSchema#string .
Conclusion
There's a lot more, but these are the basics.
-- JimmyCerra
I soitenly hope this is ain't no secret attempt to resurrect JobControlLanguage (JCL). -Curly
It's not. The resources are not a machine resources needed but domain resources on offer. The resource description is metadata that describes data and services on offer by a domain. -- MartinSpamer.
See Also: DublinCore PracticalRdf SemanticWebLayerCake RedlandRdfLibraries ResourceDescriptionFrameworkInAttributes (RDFa)
CategoryFramework CategoryXml CategoryIdeaForm CategorySemanticWeb