240 likes | 353 Views
Introduction to the RDF Data Model Sources: Ian Davis ( Talis ), Prof. Praveen Rao (UMKC ), http :// rdfabout.com /. Introduction. RDF stands for Resource D escription Framework Is a data model (like XML) W3C spec: http://www.w3.org/RDF/ 1 st spec in 1999, current standard from 2004
E N D
Introduction to the RDF Data ModelSources:Ian Davis(Talis), Prof. Praveen Rao (UMKC),http://rdfabout.com/
Introduction • RDF stands for Resource Description Framework • Is a data model (like XML) • W3C spec: http://www.w3.org/RDF/ • 1st spec in 1999, current standard from 2004 • Companies developing RDF storage solutions • AllegroGraph, Virtuoso, BigOWLIM, Garlik 4store/5store, Mulgara, etc. • Companies managing data using RDF model • BBC, Google, Yahoo!, Best Buy, Newsweek, Pfizer, etc. • http://data.nytimes.com/home/about.html • To allow anyone to say anything about anything
RDF Data Model • RDF represents data as (s,p,o) triples • s means subject, p means predicate or property, o means object • Can represent any assertion • An assertion may or may not be a fact • Together, triples form a directed, labeled graph
Example • Relationship between entities/resources
Global Naming • URIs (!= URLs) provide the ability to identify things globally and uniquely • RDF names things/resources with URIs • Can name infinite number of things using URIs • Can use the fragment identifier ‘#’ • Create different URIs for different things • If two users refer to the same URI, then they are talking about the same thing
RDF Graphs • Can have named things, literals (text or numeric values), named relations/properties, unnamed things…
RDF Graphs • Subjects can be URIs or unnamed (a.k.a blank nodes) • Predicates are URIs • Objects can be URIs, literals, or unnamed
Merging RDF Graphs • Graphs from different sources can be merged • Nodes with the same URI are considered identical • Blank nodes can be kept separate • Any RDF graph can be merged with any other RDF graph • Any number of RDF graphs can be merged
RDF vs. RDBMS • Relational (RDBMS) model • Separate databases with own schemas • Table row: assertion that relation is true for values in row • SELECT query: filter on assertions for given conditions • A relation is true (row exists) or false • RDF model • (Semantic) Web: a single giant graph database • s, p, o identified uniquely with URIs across the web • A relation is true (triple exists) or is unknown • RDF more like OO model than RDBMS
RDF vs. RDBMS example RDF triples expressed as binary relations in RDBMS
RDF vs XML • Not another XML format • XML means • Angle-brackets-slashes notation (think HTML) • Data model: tree (DAG) with different nodes (elements, attributes) • RDF means • Notation: RDF/XML, Turtle, N-triples etc. • Data model: directed graph, uses URIs
RDF Formats • All are plain-text serialization formats • RDF/XML: XML notation • Notation3 (N3): superset of TTL, beyond RDF • Turtle (TTL): subset of N3, used only for RDF • N-Triples (NT), N-Quads (NQ): subset of TTL and N3 • Simpler/minimal • Easier to parse/generate
Turtle • Terse RDF Triple Language (TTL) • Triples are terminated with a full stop • URIs are enclosed in angle brackets (< and >) • Literals are enclosed by double quotes • <http://example.com/thing> <http://example.com/relation> “Hello World" . • Use @PREFIX to shorten URIs • @PREFIX ex: <http://example.com/> . • ex:thingex:relation “Hello World" .
Turtle: Same Subject @PREFIX ex: <http://example.com/> . ex:thingex:relation "Some Text" . ex:thingex:otherrelationex:otherthing . @PREFIX ex: <http://example.com/> . ex:thingex:relation "Some Text" ; ex:otherrelationex:otherthing .
Turtle: Same Subject-Predicate @PREFIX ex: <http://example.com/> . ex:thingex:relation "SomeText" . ex:thingex:relationex:otherthing . @PREFIX ex: <http://example.com/> . ex:thingex:relation"Some Text" , ex:otherthing .
Turtle: Blank Node @PREFIX ex: <http://example.com/> . ex:thingex:relation _:a . _:a ex:property "foo" . _:a ex:property "bar” . • Use _: followed by a label • ‘a’ is the label – valid only within that particular RDF document • If _a: appears in a different document, it would refer to a different node
Turtle: Literals @PREFIX ex: <http://example.com/> . ex:thingex:relation "Hello"@en . ex:thingex:relation "Bonjour"@fr . • Literals can have a language • Literals can have a datatype • But not both! @PREFIX ex: <http://example.com/> . ex:thingex:relation "49"^^<http://www.w3.org/2001/XMLSchema#int> .
Vendors example Vendor 1: vendor1:productX dc:title "Cool-O-Matic" . vendor1:productX retail:price "$50.75" . vendor1:productX vendor1:partno "TTK583" . vendor1:productY dc:title "Fluffertron" . vendor1:productY retail:price "$26.50" . vendor1:productY vendor1:partno "AAL132" . Vendor 2: vendor2:product1 dc:title "Can Closer" . vendor2:product2 dc:title "Dust Unbuster" . Reviewer 1: vendor1:productX dc:description "This product is good buy!" . Reviewer 2: vendor2:product2 dc:description "Who needs something to unbust dust? A dust buster would be a better idea, and I wish they posted the price." . vendor2:product2 review:ratingreview:Excellent .
Links • Government (US, UK), Wikipedia, World Bank, U.S. Census, U.S. SEC, NYTimes, etc. • http://www.w3.org/wiki/DataSetRDFDumps • http://data.nytimes.com/ • http://data.gov.uk/ • http://librdf.org/parse • http://www.rdfabout.com/demo/validator/