Critical Business Benefits
• Better speed to market
• Lower running costs
• Increased market opportunities
M A N N I N G
David WoodMarsha ZaidmanLuke RuthWITH Michael Hausenblas
FOREWORD BY Tim Berners-Lee
Structured data on the Web
2 Door P
rizes
YouTube HDTV
watch videoswatch Better
videos
Publish videos
Share videos
Rate videos
Discuss videos
Linked Data RDBMS
Use data Use data
Publish data
Share data
Rate data
Discuss data
Data is easier and faster to change than code
“(Software development) cost estimation literally boils down to
"how long and how many people?"” -- Philippe Kruchten
0
10
20
30
40
50
60
70
Retail
Bars
Building
Food
Service
Accou
nting
Software
(trad
)
Legal/
Tax
Health
care
Educati
on
Childca
re
Software
(remote
)
SHRM 2008US Census 2007 Survey 2014
Payr
oll,
% o
f Tot
al
0
10
20
30
40
50
60
70
Retail
Bars
Building
Food
Service
Accou
nting
Software
(trad
)
Legal/
Tax
Health
care
Educati
on
Childca
re
Software
(remote
)
SHRM 2008US Census 2007 Survey 2014
Payr
oll,
% o
f Tot
al
“Computer Science is the only discipline in which we view adding a
new wing to a building as being maintenance.”
-- Jim Horning
class Language < ActiveRecord::Base ! has_many :examinations has_many :project_languages has_many :projects, :through => :project_languages ! attr_accessible :source, :target, :price ! validates :source, :target, :price, :presence => true ! def self.source_languages Language.find_by_sql("select * from languages group by source").map{|lang| [lang.source, lang.source] } end ! def self.target_languages Language.select(:target).uniq.map{|lang| [lang.target, lang.target]} end !end
SQL embedded in code
class Language < ActiveRecord::Base ! has_many :examinations has_many :project_languages has_many :projects, :through => :project_languages ! attr_accessible :source, :target, :price ! validates :source, :target, :price, :presence => true ! def self.source_languages Language.find_by_sql("select * from languages group by source").map{|lang| [lang.source, lang.source] } end ! def self.target_languages Language.select(:target).uniq.map{|lang| [lang.target, lang.target]} end !end
SQL embedded in code
SQL
SQL generators
client = Client.find(1, 10)
equivalent to: SELECT * FROM clients WHERE (clients.id IN (1,10))
SQL generators
client = Client.find(1, 10)
equivalent to: SELECT * FROM clients WHERE (clients.id IN (1,10))
SQL!generator
SQL generators
client = Client.find(1, 10)
equivalent to: SELECT * FROM clients WHERE (clients.id IN (1,10))
SQL!generator
That’s good, right?
SQL generators
class Amenity < ActiveRecord::Base has_many :amenity_lists ! named_scope :available, lambda { |start_date, end_date| { :select => 'amenities.*', :order => 'id', :conditions => [" amenities.id NOT IN (! SELECT aa.id from amenities aa, amenity_lists al WHERE! amenities.id = al.amenity_id AND! (! (? BETWEEN al.checkin AND al.checkout) OR! (? BETWEEN al.checkin AND al.checkout)! )! )", start_date, end_date ] } } end
Why?
Why?
• It is the tight coupling of DB+schema that causes tight code integration.
Back to the future
q = """SELECT ?x ?z ?y! WHERE {! course:%s course:termName ?x;! ?s ?t.! ?s ?d ?z.! ?t course:termName ?y.! FILTER (regex(?z,'[^a-z0-9]','i') && isLiteral(?z) )! }ORDER BY ASC(?s) """%var_value
schema
ontologyinference
schema
SPARQL
“Perfection is achieved, not when there is nothing left to add, but when
there is nothing left to remove.” -- Antoine de Saint-Exupéry
Next
schema
ontologyApplication relationships
Data structure
Next
schema
ontology
Next
inference
schema
ontology
Next
inference
schema
ontology
SPARQL!generator
Next
generic code
inference
schema
ontology
SPARQL!generator
SQL
SQL
1960s
1970s
1980s
1990s
2000s
2010s
SQL!generator
schema
ontologyinference
schema
SPARQL
SPARQL!generator
schema
ontology
inference
generic code
inference
schema
ontology
Bonobos!
Bonobos!
Animal Pants
Label Label
Comment Comment
Depiction Depiction
Order page
Color
Gender pronoun
Address
Label
Comment
Depiction
Depiction
Label
Comment
Gender pronoun Address
Color Order page
Lack of Context
Required Context
carrelet@fr
plaice@en_gb sand dab@en_us
lemon dab@en_us
lemon sole@en_us
carrelet@fr
plaice@en_gb sand dab@en_us
lemon dab@en_us
lemon sole@en_us
limande@fr
calimande@fr
plie@fr
Dr. Chris Welty
“Semantic Technology is not an end in itself, it is a means to an end, a set of tools and techniques for supporting
modern data analytics. It goes alongside other essential technologies
like machine learning, databases, information retrieval, etc.”
IBM Watson Team
M A N N I N G
David WoodMarsha ZaidmanLuke RuthWITH Michael Hausenblas
FOREWORD BY Tim Berners-Lee
Structured data on the Web
2 Door P
rizes
This work is Copyright © 2011 3 Round Stones Inc. It is licensed under the Creative Commons Attribution 3.0 Unported LicenseFull details at: http://creativecommons.org/licenses/by/3.0/
You are free:
to Share — to copy, distribute and transmit the work
to Remix — to adapt the work
Under the following conditions:Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.