240 likes | 370 Vues
Learn about the RDF data model, its structure with subject, predicate, and objects, graph representation, merging graphs, comparison with RDBMS, XML, and various RDF formats like Turtle. Includes examples and vendor data.
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/