Semantic Web and LinkedData Explained For The Lay Person

The Semantic Web is beginning to gain steam along with the related (but separate) NoSQL and BigData movements; but what is the Semantic Web (commonly abbreviated “SW”)? The term itself sounds like some uber geek-speak and turns off most people without a technical background and appreciation of web evolution almost immediately after hearing it. However, whether the business world knows it or not, the Semantic Web will be the defining information technology of this decade (2010-2020). Let me start this off with the abridged version for the very impatient, by providing three simple definitions of three key terms RDF, LOD and SW. Sorry, but reading through these three are necessary to be able to understand the core concept of the Semantic Web…
RDF
“Resource Description Framework is a building block technology (like a single lego brick) to enable the Semantic Web to be built”.
LOD
“Linked Open Data is a set of best practices, policies and guidelines for connecting datasets on the Web to make them more Semantic (like the instruction manual for a pack of legos, detailing how to put your bricks together to make them match the image on the box, so that you get what you expected and can then show it off to others and they can understand what you’ve created and how you’ve done it).”
SW
“The Semantic Web is a cross-domain network of data, services and applications built upon the World Wide Web in a particular manner, such that the data, services and applications can be easily interconnected in novel ways (like a big, “constantly updated” encyclopaedia/guidebook of all the cool structures and combinations that have EVER been made with Legos – such as towers, castles, dinosaurs, robots, vehicles, animals, scenes, and just about anything people can dream up)”.
Linked Data and Semantic Web Defined In Detail
- Use URIs
- Use HTTP URIs
- Serve useful information using SPARQL, RDF standards
- Mention URIs of related objects
How did we get here?
The Theory of Biological Evolution In the beginning… • the world was full of genetic code • this code formed into vessels of information • the basic unit of biological information was known as: the gene • the gene could store, duplicate, and transmit data • with duplication came interpretation and mutation • with mutation came specialization • genes better suited for certain tasks begun to work together • beneficial partnerships led to the first “organisms”. Ok, maybe that’s a little too far back, but I think you get my point.
Where are we going?
Just as in the biological evolution of the world as we know it, likewise, the world of the web is undergoing a constant evolution. In the words of the inventor of the World Wide Web and the original Semantic Web visionary himself, Tim Berners-Lee:
The first step is putting data on the Web in a form that machines can naturally understand, or converting it to that form. This creates what I call a Semantic Web – a web of data that can be processed directly or indirectly by machines.
This really points to a natural evolution of the Web, which is probably why marketers and technologists hoping to raise interest and hype have tried to put “version numbers” on it:
Web 1.0 | Web 2.0 | Web 3.0 | |
---|---|---|---|
Statistics | 45 Million Users, mostly in North America and Europe (1996) | 1.2 Billion Users, Global (2006) | 4 Billion+ Connected by Internet/Mobile, “3rd World” Surpasses “1st” in Number of Users (2016) |
Interaction Type | Read-only (for the most part) | Read/Write (2-way communication now expected) | Portable/Personal (P2P interaction the new norm) |
Focus | Enterprises & Companies | Groups & Communities | Lifestreams & Legacies |
Presence | Homepages | Blogs | Automated Aggregation Services |
Content | Owning Data | Sharing Data | Integrating Data |
Reference Source | Encyclopedia Britannica Online | Wikipedia | DBpedia + Linked Data Web |
Search Engine | Google .vs. Yahoo | Google .vs. Bing | Google .vs. Global Hive |
Browser | Netscape .vs. IE | Chrome .vs. Firefox | Operating System .vs. Cloud |
Advertising | Display Ads | Word-of-Click | Rewards |
Measurement | Page Views (CPM) | Cost-per-Click (CPC) | Engagement (CPA) |
Business Model | PPV/Sales | Membership/Subscriptions | Crowdfunding/Micropayments |
Enabling Technologies |
|
|
|
In fact, in the case of the Semantic Web, the “guidebook” comes with a lot more than just a simple “text-based” table of contents. It also comes with an interactive user interface (think of a CD/DVD or “special Download Link” to an app with license code that you find accompanying some books) that then gives you access to an incredible wealth of information, but its no ordinary software because it includes:
- Interactive and easily searchable full text that can even accept spoken input and instantly take you to the correct page for learning how to build something or get the right parts, accessories, and other resources
- Aggregated, Ranked and Filtered authoritative News sources to keep on top of what other people are building
- Images of finished structures
- Step-by-step Video tutorials
- Live-support Telephone hotlines
- Videoconference sessions with top experts
- Instant Message Text chat services to get free & quick help from other builders
- Companies that can help you build more complex structures such as this replica of the Roman Coliseum
- Reviews on all the companies and backgrounds on their employees, events that are coming up where you can learn from an expert how to build something
- Recommendations of other People to connect to, who want to attempt to build the same thing you do, or who have similar interests/experience
- the ability to repurpose the entire content or any section of it in any way you see fit (i.e. automating quotes/references, searching for more related content around the web, sending in errata, turning text into audio with Text-To-Speech, etc)
TECHNICAL EXPLANATION
The rest of this article is a more technical look at the Semantic Web and its building block technologies.
RDF is sometimes also described as a “subject-object-predicate” relationship which is a complex way of saying it, but in summary RDF is just a statement, it simply says something about how any item in the world is (from a single-cell molecule to the entire Universe or from a user of a chat site to the US president and everything in between). When I say how something “is” I just mean, what color it is, how much it weighs, where it can be found, where it originates from, etc… just about any relationship between things that you can think of, can be described by RDF.
Semantic = Meaning.
Web = An interlinked, self-supporting structure.
We’ve already heard about RDF being an essential building block, so what does it look like?
WARNING: We can’t go any further without getting into the technical/geeky side of thing, so be warned that it may not look pretty!
RDF is more completely structured than regular data, so that computers can understand it as well as people can. In layman’s terms, you could compare what it would be like for you to only get some scribbles on a napkin from some guy you hired to design your house .vs. getting one of those huge fancy blueprints from a professional with all the measurements taken to scale. Functionally speaking, all you need to know is that RDF is written as XML-compatible code that adds a few unique aspects such as relationships between data in the same document and strict emphasis of namespaces on all Elements and Attributes.
FOAF
The following section is an example of one of the most widely used formats, Friend-Of-A-Friend (FOAF).
FOAF the “de facto” example of RDF (click below to expand):
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:s="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:con="http://www.w3.org/2000/10/swap/pim/contact#" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/2002/01/tr-automation/tr.rdf"> <dc:title>W3C Standards and Technical Reports</dc:title> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf"> <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc/3.0/"/> <dc:title>Tim Berners-Lee's FOAF file</dc:title> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/PersonalProfileDocument"/> <foaf:maker rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> <foaf:primaryTopic rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#cm"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://www.koalie.net/foaf.rdf"/> <foaf:name>Coralie Mercier</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#dj"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://www.grorg.org/dean/foaf.rdf"/> <foaf:homepage rdf:resource="http://www.grorg.org/dean/"/> <foaf:mbox rdf:resource="mailto:dean@w3.org"/> <foaf:mbox rdf:resource="mailto:dino@grorg.org"/> <foaf:mbox_sha1sum>6de4ff27ef927b9ba21ccc88257e41a2d7e7d293</foaf:mbox_sha1sum> <foaf:name>Dean Jackson</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#edd"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://heddley.com/edd/foaf.rdf"/> <foaf:homepage rdf:resource="http://heddley.com/edd/"/> <foaf:mbox rdf:resource="mailto:edd@usefulinc.com"/> <foaf:mbox rdf:resource="mailto:edd@xml.com"/> <foaf:mbox rdf:resource="mailto:edd@xmlhack.com"/> <foaf:name>Edd Dumbill</foaf:name> <foaf:nick>edd</foaf:nick> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#libby"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <owl:sameAs rdf:resource="http://swordfish.rdfweb.org/people/libby/rdfweb/webwho.xrdf#me"/> <foaf:img rdf:resource="http://swordfish.rdfweb.org/~libby/libby.jpg"/> <foaf:mbox rdf:resource="mailto:libby.miller@bristol.ac.uk"/> <foaf:name>Libby Miller</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#ss"> <foaf:name>Susie Stephens</foaf:name> <foaf:organization rdf:resource="http://dbpedia.org/resource/Eli_Lilly_and_Company"/> </rdf:Description> <rdf:Description rdf:about="http://bblfish.net/people/henry/card#me"> <foaf:name>Henry Story</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dbpedia.org/resource/John_Gage"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:img rdf:resource="http://upload.wikimedia.org/wikipedia/commons/d/de/John_Gage.jpg"/> <foaf:name>John Gage</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dbpedia.org/resource/John_Klensin"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>John Klensin</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dbpedia.org/resource/John_Markoff"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>John Markoff</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dbpedia.org/resource/John_Seely_Brown"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <owl:sameAs rdf:resource="http://www4.wiwiss.fu-berlin.de/bookmashup/persons/John+Seely+Brown"/> <foaf:homepage rdf:resource="http://www.johnseelybrown.com/"/> <foaf:img rdf:resource="http://transliteracies.english.ucsb.edu/images/participants/t/brown-john-seely-2.jpg"/> <foaf:name>John Seely Brown</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dbpedia.org/resource/Tim_Bray"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Tim Bray</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2007/01/camp/data#course"> <foaf:maker rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2007/wiki/people/JoeLambda#JL"> <foaf:firstName>Joe</foaf:firstName><foaf:name>Joe Lambda</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/2007/wiki/people/RobertHoffmann#RMH"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Robert Hoffmann</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/breadcrumbs/blog/4"> <dc:title>timbl's blog</dc:title> <s:seeAlso rdf:resource="http://dig.csail.mit.edu/breadcrumbs/blog/feed/4"/> <foaf:maker rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://dig.csail.mit.edu/data#DIG"> <foaf:member rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://eikeon.com/foaf.rdf#eikeon"> <foaf:name>Daniel Krech</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://hometown.aol.com/chbussler/foaf/chbussler.foaf#me"> <foaf:name>Christoph Bussler</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://id.ecs.soton.ac.uk/person/1269"> <foaf:name>Nicholas Gibbins</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://id.ecs.soton.ac.uk/person/1650"> <foaf:name>Wendy Hall</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://id.ecs.soton.ac.uk/person/2686"> <foaf:name>Nigel Shadbolt</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://id.ecs.soton.ac.uk/person/60"> <foaf:name>Les Carr</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://inamidst.com/sbp/foaf#Sean"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Sean Palmer</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://my.opera.com/chaals/xml/foaf#me"> <foaf:name>Charles McCathieNevile</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://my.opera.com/danbri/xml/foaf#me"> <s:seeAlso rdf:resource="http://danbri.livejournal.com/data/foaf"/> <owl:sameAs rdf:resource="http://danbri.org/foaf.rdf#danbri"/> <owl:sameAs rdf:resource="http://www4.wiwiss.fu-berlin.de/dblp/resource/person/336851"/> <foaf:mbox_sha1sum>70c053d15de49ff03a1bcc374e4119b40798a66e</foaf:mbox_sha1sum> </rdf:Description> <rdf:Description rdf:about="http://my.opera.com/howcome/xml/foaf#howcome"> <foaf:name>Håkon Wium Lie</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://myopenlink.net/dataspace/person/kidehen#this"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Kingsley Idehen</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://norman.walsh.name/knows/who#norman-walsh"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Norman Walsh</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://people.apache.org/~oshani/foaf.rdf#me"> <foaf:name>Oshani Seneviratne</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://people.csail.mit.edu/lkagal/foaf#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:mailbox rdf:resource="mailto:lalana@csail.mit.edu"/> <foaf:name>Lalana Kagal</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://people.csail.mit.edu/psz/foaf.rdf#me"> <foaf:name>Peter Szolovits</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://people.w3.org/simon/foaf#i"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Simon J. Hernandez</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://qdos.com/people/tom.xrdf#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Tom Ilube</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://research.microsoft.com/~henrikn/foaf.xml#me"> <foaf:name>Henrik Nielsen</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://rit.mellon.org/Members/ihf/foaf.rdf#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:homepage rdf:resource="http://www.mellon.org/about_foundation/staff/program-area-staff/irafuchs"/> <foaf:img rdf:resource="http://www.sun.com/products-n-solutions/edu/images/jelc/fuchs.jpg"/> <foaf:name>Ira Fuchs</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://teole.jfouffa.org/People/Teole/card.rdf#me"> <foaf:name>Philippe Le Hégaret</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://users.ecs.soton.ac.uk/mc/mcfoaf.rdf#me"> <foaf:name>mc schraefel</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://web.mit.edu/shinnyih/foaf.rdf#"> <foaf:name>Shinnyih Huang</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://wiki.ontoworld.org/index.php/_IRW2006"> <dc:title>Identity, Reference and the Web workshop 2006</dc:title> <con:participant rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://www.aaronsw.com/about.xrdf#aaronsw"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://www.aaronsw.com/about.xrdf"/> <foaf:mbox rdf:resource="mailto:me@aaronsw.com"/> <foaf:name>Aaron Swartz</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.cambridgesemantics.com/people/about/lee"> <foaf:name>Lee Feigenbaum</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.cs.umd.edu/~hendler/2003/foaf.rdf#jhendler"> <foaf:name>Jim Hendler</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.dajobe.org/foaf.rdf#i"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:mailbox rdf:resource="mailto:dave@dajobe.org"/> <foaf:name>Dave Beckett</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.ecs.soton.ac.uk/~dt2/dlstuff/www2006_data#panel-panelk01"> <s:label>The Next Wave of the Web (Plenary Panel)</s:label> <con:participant rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> </rdf:Description> <rdf:Description rdf:about="http://www.isi.edu/~gil/foaf.rdf#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:name>Yolanda Gill</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.ivan-herman.net/foaf.rdf#me"> <foaf:mbox_sha1sum>5ac8032d5f6012aa1775ea2f63e1676bafd5e80b</foaf:mbox_sha1sum> <foaf:mbox_sha1sum>c21b7ed00d78a35efcd8e567f8fd9cca71058c5</foaf:mbox_sha1sum> <foaf:mbox_sha1sum>eccd01ba8ce2391a439e9b052a9fbf37eae9f732</foaf:mbox_sha1sum> <foaf:name>Ivan Herman</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.kjetil.kjernsmo.net/foaf#me"> <foaf:name>Kjetil Kjernsmo</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.lassila.org/ora.rdf#me"> <foaf:name>Ora Lassila</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.mindswap.org/2004/owl/mindswappers#Bijan.Parsia"> <foaf:name>Bijan Parsia</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.mindswap.org/2004/owl/mindswappers#Jennifer.Golbeck"> <foaf:name>Jennifer Golbeck</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/Berners-Lee/card#amy"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:label>Amy van der Hiel</s:label> <s:seeAlso rdf:resource="http://people.w3.org/amy/foaf.rdf"/> <con:familyName>van der Hiel</con:familyName> <con:givenName>Amy</con:givenName> <foaf:mbox rdf:resource="mailto:amy@w3.org"/> <foaf:mbox_sha1sum>1839a1cc2e719a85ea7d9007f587b2899cd94064</foaf:mbox_sha1sum> <foaf:name>Amy van der Hiel</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/Berners-Lee/card#i"> <foaf:img rdf:resource="http://www.w3.org/Press/Stock/Berners-Lee/2001-europaeum-eighth.jpg"/> <foaf:knows rdf:resource="http://bblfish.net/people/henry/card#me"/> <foaf:knows rdf:resource="http://danbri.org/foaf#danbri"/> <foaf:knows rdf:resource="http://dbpedia.org/resource/John_Gage"/> <foaf:knows rdf:resource="http://dbpedia.org/resource/John_Klensin"/> <foaf:knows rdf:resource="http://dbpedia.org/resource/John_Markoff"/> <foaf:knows rdf:resource="http://dbpedia.org/resource/John_Seely_Brown"/> <foaf:knows rdf:resource="http://dbpedia.org/resource/Tim_Bray"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2007/wiki/people/JoeLambda#JL"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2007/wiki/people/RobertHoffmann#RMH"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#cm"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#edd"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#libby"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf#ss"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/People/RRS"/> <foaf:knows rdf:resource="http://dig.csail.mit.edu/People/yosi#YES"/> <foaf:knows rdf:resource="http://eikeon.com/foaf.rdf#eikeon"/> <foaf:knows rdf:resource="http://heddley.com/edd/foaf.rdf#edd"/> <foaf:knows rdf:resource="http://hometown.aol.com/chbussler/foaf/chbussler.foaf#me"/> <foaf:knows rdf:resource="http://id.ecs.soton.ac.uk/person/1269"/> <foaf:knows rdf:resource="http://id.ecs.soton.ac.uk/person/1650"/> <foaf:knows rdf:resource="http://id.ecs.soton.ac.uk/person/2686"/> <foaf:knows rdf:resource="http://id.ecs.soton.ac.uk/person/60"/> <foaf:knows rdf:resource="http://inamidst.com/sbp/foaf#Sean"/> <foaf:knows rdf:resource="http://my.opera.com/chaals/xml/foaf#me"/> <foaf:knows rdf:resource="http://my.opera.com/howcome/xml/foaf#howcome"/> <foaf:knows rdf:resource="http://myopenlink.net/dataspace/person/kidehen#this"/> <foaf:knows rdf:resource="http://norman.walsh.name/knows/who#norman-walsh"/> <foaf:knows rdf:resource="http://people.apache.org/~oshani/foaf.rdf#me"/> <foaf:knows rdf:resource="http://people.csail.mit.edu/crowell/foaf.rdf#crowell"/> <foaf:knows rdf:resource="http://people.csail.mit.edu/lkagal/foaf#me"/> <foaf:knows rdf:resource="http://people.csail.mit.edu/psz/foaf.rdf#me"/> <foaf:knows rdf:resource="http://people.csail.mit.edu/ryanlee/about#ryanlee"/> <foaf:knows rdf:resource="http://people.w3.org/simon/foaf#i"/> <foaf:knows rdf:resource="http://presbrey.mit.edu/foaf.rdf#presbrey"/> <foaf:knows rdf:resource="http://qdos.com/people/tom.xrdf#me"/> <foaf:knows rdf:resource="http://research.microsoft.com/~henrikn/foaf.xml#me"/> <foaf:knows rdf:resource="http://rit.mellon.org/Members/ihf/foaf.rdf#me"/> <foaf:knows rdf:resource="http://teole.jfouffa.org/People/Teole/card.rdf#me"/> <foaf:knows rdf:resource="http://users.ecs.soton.ac.uk/mc/mcfoaf.rdf#me"/> <foaf:knows rdf:resource="http://web.mit.edu/ruthdhan/www/foaf.rdf#ruthdhan"/> <foaf:knows rdf:resource="http://web.mit.edu/shinnyih/foaf.rdf#"/> <foaf:knows rdf:resource="http://www.aaronsw.com/about.xrdf#aaronsw"/> <foaf:knows rdf:resource="http://www.aaronsw.com/about.xrdf#aaronsw"/> <foaf:knows rdf:resource="http://www.cambridgesemantics.com/people/about/lee"/> <foaf:knows rdf:resource="http://www.cs.umd.edu/~hendler/2003/foaf.rdf#jhendler"/> <foaf:knows rdf:resource="http://www.dajobe.org/foaf.rdf#i"/> <foaf:knows rdf:resource="http://www.isi.edu/~gil/foaf.rdf#me"/> <foaf:knows rdf:resource="http://www.ivan-herman.net/foaf.rdf#me"/> <foaf:knows rdf:resource="http://www.kjetil.kjernsmo.net/foaf#me"/> <foaf:knows rdf:resource="http://www.lassila.org/ora.rdf#me"/> <foaf:knows rdf:resource="http://www.mindswap.org/2004/owl/mindswappers#Bijan.Parsia"/> <foaf:knows rdf:resource="http://www.mindswap.org/2004/owl/mindswappers#Jennifer.Golbeck"/> <foaf:knows rdf:resource="http://www.w3.org/People/Berners-Lee/card#amy"/> <foaf:knows rdf:resource="http://www.w3.org/People/Connolly/#me"/> <foaf:knows rdf:resource="http://www.w3.org/People/EM/contact#me"/> <foaf:knows rdf:resource="http://www.w3.org/People/Jacobs/contact.rdf#IanJacobs"/> <foaf:knows rdf:resource="http://www.w3.org/People/djweitzner/foaf#DJW"/> <foaf:knows rdf:resource="http://www.w3.org/People/karl/karl-foaf.xrdf#me"/> <foaf:knows rdf:parseType="Resource"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://dannyayers.com/me.rdf"/> <foaf:mbox_sha1sum>669fe353dbef63d12ba11f69ace8acbec1ac8b17</foaf:mbox_sha1sum> <foaf:name>Danny Ayers</foaf:name> </foaf:knows> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/Connolly/#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://www.w3.org/People/Connolly/home-smart.rdf"/> <foaf:mbox rdf:resource="mailto:connolly@w3.org"/> <foaf:name>Dan Connolly</foaf:name> <foaf:nick>DanCon</foaf:nick> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/EM/contact#me"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <s:seeAlso rdf:resource="http://www.w3.org/People/EM/contact"/> <foaf:homepage rdf:resource="http://purl.org/net/eric/"/> <foaf:img rdf:resource="http://www.ilrt.bristol.ac.uk/people/cmdjb/events/dc7/orig/eric.png"/> <foaf:img rdf:resource="http://www.oclc.org/~emiller/capture.jpg"/> <foaf:mbox rdf:resource="mailto:em@w3.org"/> <foaf:name>Eric Miller</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/Jacobs/contact.rdf#IanJacobs"> <foaf:name>Ian Jacobs</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/djweitzner/foaf#DJW"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <foaf:mbox_sha1sum>032c319f439f63efba54f4fa51bfb3a3fafedfbe</foaf:mbox_sha1sum> <foaf:name>Daniel J Weitzner</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/People/karl/karl-foaf.xrdf#me"> <s:seeAlso rdf:resource="http://www.w3.org/People/karl/karl-foaf.xrdf"/> <foaf:mbox rdf:resource="mailto:karl@w3.org"/> <foaf:name>Karl Dubost</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/data#W3C"> <s:label>W3C</s:label> <s:seeAlso rdf:resource="http://dig.csail.mit.edu/2008/2002/01/tr-automation/tr.rdf"/> <con:publicHomePage rdf:resource="http://www.w3.org/"/> <foaf:homepage rdf:resource="http://dig.csail.mit.edu/2008/"/> <foaf:logo rdf:resource="http://dig.csail.mit.edu/2008/Icons/w3c_home"/> <foaf:name>World Wide Web Consortium</foaf:name> </rdf:Description> <rdf:Description rdf:about="http://www4.wiwiss.fu-berlin.de/booksMeshup/books/006251587X"> <dc:creator rdf:resource="http://www.w3.org/People/Berners-Lee/card#i"/> <dc:title>Weaving the Web: The Original Design and Ultimate Destiny of the World Wide Web</dc:title> </rdf:Description> </rdf:RDF>
Web Ontology Language (OWL) is like the standard spoken/read/written language in which we print the aforementioned Linked Open Data instruction booklet (i.e. English, French, German, Japanese, etc); it is like a language because it consists of a dictionary of nouns, verbs and adjectives describing things, and also a thesaurus of things that are really different words (terms) for describing the same or similar concepts. For example, we have described the data above using FOAF ontology, which at a high level can describe any of the following terms or relationships:
FOAF Core
Social Web
- nick
- mbox
- homepage
- weblog
- openid
- jabberID
- mbox_sha1sum
- interest
- topic_interest
- topic (page)
- workplaceHomepage
- workInfoHomepage
- schoolHomepage
- publications
- currentProject
- pastProject
- account
- OnlineAccount
- accountName
- accountServiceHomepage
- PersonalProfileDocument
- tipjar
- sha1
- thumbnail
- logo
Now that you see what OWL looks like at a high-level (in the FOAF Ontology summary listed above), lets see what it looks like when implemented in full as RDF.
WARNING: Once again, feel free to skip down to one of the next sections on SPARQL or Datasets.
Again, this is only shown for completeness sake and is not required to understand the Semantic Web concept, feel free to skip down to the next section about SPARQL or the last section about Datasets.
FOAF schema, an example of OWL in action (click below to expand):
<!-- This is the FOAF formal vocabulary description, expressed using W3C RDFS and OWL markup. foaf/spec version --> <!-- For more information about FOAF: --> <!-- see the FOAF project homepage, http://www.foaf-project.org/ --> <!-- FOAF specification, http://xmlns.com/foaf/spec/ --> <!-- --> <!-- first we introduce a number of RDF namespaces we will be using... --> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:vs="http://www.w3.org/2003/06/sw-vocab-status/ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:wot="http://xmlns.com/wot/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <!-- Here we describe general characteristics of the FOAF vocabulary ('ontology'). --> <owl:Ontology rdf:about="http://xmlns.com/foaf/0.1/" dc:title="Friend of a Friend (FOAF) vocabulary" dc:description="The Friend of a Friend (FOAF) RDF vocabulary, described using W3C RDF Schema and the Web Ontology Language." > </owl:Ontology> <!-- OWL/RDF interop section - geeks only --> <!-- most folk can ignore this lot. the game here is to make FOAF work with vanilla RDF/RDFS tools, and with the stricter OWL DL profile of OWL. At the moment we're in the OWL Full flavour of OWL. The following are tricks to try have the spec live in both worlds at once. See http://phoebus.cs.man.ac.uk:9999/OWL/Validator http://www.mindswap.org/2003/pellet/demo.shtml ...for some tools that help. --> <owl:AnnotationProperty rdf:about="http://xmlns.com/wot/0.1/assurance"/> <owl:AnnotationProperty rdf:about="http://xmlns.com/wot/0.1/src_assurance"/> <owl:AnnotationProperty rdf:about="http://www.w3.org/2003/06/sw-vocab-status/ns#term_status"/> <!-- DC terms are NOT annotation properties in general, so we consider the following claims scoped to this document. They may be removed in future revisions if OWL tools become more flexible. --> <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/description"/> <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/title"/> <owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/date"/> <owl:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Class"/> <!-- <owl:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Resource"/> <owl:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Literal"/> --> <!-- end of OWL/RDF interop voodoo. mostly. --> <!-- utility class, a candidate for replacing the pattern of subproperty-ing rdfs:label --> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/LabelProperty" vs:term_status="unstable"> <rdfs:label>Label Property</rdfs:label> <rdfs:comment>A foaf:LabelProperty is any RDF property with texual values that serve as labels.</rdfs:comment> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdfs:Class> <!-- FOAF classes (types) are listed first. --> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Person" rdfs:label="Person" rdfs:comment="A person." vs:term_status="stable"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Person"/></rdfs:subClassOf> --> <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/foaf/0.1/Agent"/></rdfs:subClassOf> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Agent"/></rdfs:subClassOf> --> <rdfs:subClassOf><owl:Class rdf:about="http://www.w3.org/2000/10/swap/pim/contact#Person" rdfs:label="Person"/></rdfs:subClassOf> <rdfs:subClassOf><owl:Class rdf:about="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing" rdfs:label="Spatial Thing"/></rdfs:subClassOf> <!-- aside: are spatial things always spatially located? Person includes imaginary people... discuss... --> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <!-- <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Document"/> this was a mistake; tattoo'd people, for example. --> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Project"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Document" rdfs:label="Document" rdfs:comment="A document." vs:term_status="testing"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <!-- <rdfs:subClassOf rdf:resource="http://xmlns.com/wordnet/1.6/Document"/> --> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Organization"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Project"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Organization" rdfs:label="Organization" rdfs:comment="An organization." vs:term_status="stable"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Organization"/></rdfs:subClassOf> --> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Document"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Group" vs:term_status="stable" rdfs:label="Group" rdfs:comment="A class of Agents."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Agent" vs:term_status="stable" rdfs:label="Agent" rdfs:comment="An agent (eg. person, group, software or physical artifact)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <owl:equivalentClass rdf:resource="http://purl.org/dc/terms/Agent"/> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Agent-3"/></rdfs:subClassOf> --> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Project" vs:term_status="testing" rdfs:label="Project" rdfs:comment="A project (a collective endeavour of some kind)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Project"/></rdfs:subClassOf> --> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <!-- arguably a subclass of Agent; to be discussed --> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Image" vs:term_status="testing" rdfs:label="Image" rdfs:comment="An image."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <!-- <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/wordnet/1.6/Document"/></rdfs:subClassOf> --> <rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/foaf/0.1/Document"/></rdfs:subClassOf> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/PersonalProfileDocument" rdfs:label="PersonalProfileDocument" rdfs:comment="A personal profile RDF document." vs:term_status="testing"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Document"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/OnlineAccount" vs:term_status="testing" rdfs:label="Online Account" rdfs:comment="An online account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing" rdfs:label="Thing"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/OnlineGamingAccount" vs:term_status="unstable" rdfs:label="Online Gaming Account" rdfs:comment="An online gaming account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/OnlineEcommerceAccount" vs:term_status="unstable" rdfs:label="Online E-commerce Account" rdfs:comment="An online e-commerce account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdfs:Class> <rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/OnlineChatAccount" vs:term_status="unstable" rdfs:label="Online Chat Account" rdfs:comment="An online chat account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdfs:Class> <!-- FOAF properties (ie. relationships). --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/mbox" vs:term_status="stable" rdfs:label="personal mailbox" rdfs:comment="A personal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox. This is a 'static inverse functional property', in that there is (across time and change) at most one individual that ever has any particular value for foaf:mbox."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/mbox_sha1sum" vs:term_status="testing" rdfs:label="sha1sum of a personal mailbox URI name" rdfs:comment="The sha1sum of the URI of an Internet mailbox associated with exactly one owner, the first owner of the mailbox."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <!-- put it back in again 2006-01-29 - see http://chatlogs.planetrdf.com/swig/2006-01-29.html#T21-12-35 I have mailed rdfweb-dev@vapours.rdfweb.org for discussion. Libby Commenting out as a kindness to OWL DL users. The semantics didn't quite cover our usage anyway, since (a) we want static-across-time, which is so beyond OWL as to be from another planet (b) we want identity reasoning invariant across xml:lang tagging. FOAF code will know what to do. OWL folks note, this assertion might return. danbri --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/gender" vs:term_status="testing" rdfs:label="gender" rdfs:comment="The gender of this Agent (typically but not necessarily 'male' or 'female')."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <!-- whatever one's gender is, and we are liberal in leaving room for more options than 'male' and 'female', we model this so that an agent has only one gender. --> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/geekcode" vs:term_status="archaic" rdfs:label="geekcode" rdfs:comment="A textual geekcode for this person, see http://www.geekcode.com/geek.html"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/dnaChecksum" vs:term_status="archaic" rdfs:label="DNA checksum" rdfs:comment="A checksum for the DNA of some thing. Joke."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/sha1" vs:term_status="unstable" rdfs:label="sha1sum (hex)" rdfs:comment="A sha1sum hash, in hex."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <!-- rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty" --> <!-- IFP under discussion --> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/based_near" vs:term_status="testing" rdfs:label="based near" rdfs:comment="A location that something is based near, for some broadly human notion of near."> <!-- see http://esw.w3.org/topic/GeoOnion for extension ideas --> <!-- this was ranged as Agent... hmm --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"/> <rdfs:range rdf:resource="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <!-- FOAF naming properties --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/title" vs:term_status="testing" rdfs:label="title" rdfs:comment="Title (Mr, Mrs, Ms, Dr. etc)"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/nick" vs:term_status="testing" rdfs:label="nickname" rdfs:comment="A short informal nickname characterising an agent (includes login identifiers, IRC and other chat nicknames)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <!-- ......................... chat IDs ........................... --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/jabberID" vs:term_status="testing" rdfs:label="jabber ID" rdfs:comment="A jabber ID for something."> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <!-- <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> ...different to the other IM IDs, as Jabber has wider usage, so we don't want the implied rdfs:domain here. --> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <!-- there is a case for using resources/URIs here, ... --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/aimChatID" vs:term_status="testing" rdfs:label="AIM chat ID" rdfs:comment="An AIM chat ID"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/skypeID" vs:term_status="testing" rdfs:label="Skype ID" rdfs:comment="A Skype ID"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <!-- todo: OWL2 easy key definition --> </rdf:Property> <!-- http://www.stud.uni-karlsruhe.de/~uck4/ICQ/Packet-112.html --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/icqChatID" vs:term_status="testing" rdfs:label="ICQ chat ID" rdfs:comment="An ICQ chat ID"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/yahooChatID" vs:term_status="testing" rdfs:label="Yahoo chat ID" rdfs:comment="A Yahoo chat ID"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/msnChatID" vs:term_status="testing" rdfs:label="MSN chat ID" rdfs:comment="An MSN chat ID"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/nick"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> </rdf:Property> <!-- ....................................................... --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/name" vs:term_status="testing" rdfs:label="name" rdfs:comment="A name for some thing."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#label"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/firstName" vs:term_status="testing" rdfs:label="firstName" rdfs:comment="The first name of a person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/lastName" vs:term_status="testing" rdfs:label="lastName" rdfs:comment="The last name of a person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/givenName" vs:term_status="testing" rdfs:label="Given name" rdfs:comment="The given name of some person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/givenname" vs:term_status="archaic" rdfs:label="Given name" rdfs:comment="The given name of some person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/surname" vs:term_status="archaic" rdfs:label="Surname" rdfs:comment="The surname of some person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/family_name" vs:term_status="archaic" rdfs:label="family_name" rdfs:comment="The family name of some person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/familyName" vs:term_status="testing" rdfs:label="familyName" rdfs:comment="The family name of some person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <!-- end of naming properties. See http://rdfweb.org/issues/show_bug.cgi?id=7 for open issue / re-design discussions. --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/phone" vs:term_status="testing" rdfs:label="phone" rdfs:comment="A phone, specified using fully qualified tel: URI scheme (refs: http://www.w3.org/Addressing/schemes.html#tel)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/homepage" vs:term_status="stable" rdfs:label="homepage" rdfs:comment="A homepage for some thing."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/isPrimaryTopicOf"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <!-- previously: rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent" --> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/weblog" vs:term_status="testing" rdfs:label="weblog" rdfs:comment="A weblog of some thing (whether person, group, company etc.)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/openid" vs:term_status="testing" rdfs:label="openid" rdfs:comment="An OpenID for an Agent."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/isPrimaryTopicOf"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/tipjar" vs:term_status="testing" rdfs:label="tipjar" rdfs:comment="A tipjar document for this agent, describing means for payment and reward."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/plan" vs:term_status="testing" rdfs:label="plan" rdfs:comment="A .plan comment, in the tradition of finger and '.plan' files."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/made" vs:term_status="stable" rdfs:label="made" rdfs:comment="Something that was made by this agent."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/maker"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/maker" vs:term_status="stable" rdfs:label="maker" rdfs:comment="An agent that made this thing."> <owl:equivalentProperty rdf:resource="http://purl.org/dc/terms/creator"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/made"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/img" vs:term_status="testing" rdfs:label="image" rdfs:comment="An image that can be used to represent some thing (ie. those depictions which are particularly representative of something, eg. one's photo on a homepage)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Image"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/depiction"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/depiction" vs:term_status="testing" rdfs:label="depiction" rdfs:comment="A depiction of some thing."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Image"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/depicts"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/depicts" vs:term_status="testing" rdfs:label="depicts" rdfs:comment="A thing depicted in this representation."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Image"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/depiction"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/thumbnail" vs:term_status="testing" rdfs:label="thumbnail" rdfs:comment="A derived thumbnail image."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Image"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Image"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/myersBriggs" vs:term_status="testing" rdfs:label="myersBriggs" rdfs:comment="A Myers Briggs (MBTI) personality classification."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/workplaceHomepage" vs:term_status="testing" rdfs:label="workplace homepage" rdfs:comment="A workplace homepage of some person; the homepage of an organization they work for."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/workInfoHomepage" vs:term_status="testing" rdfs:label="work info homepage" rdfs:comment="A work info homepage of some person; a page about their work for some organization."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/schoolHomepage" vs:term_status="testing" rdfs:label="schoolHomepage" rdfs:comment="A homepage of a school attended by the person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/knows" vs:term_status="stable" rdfs:label="knows" rdfs:comment="A person known by this person (indicating some level of reciprocated interaction between the parties)."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/interest" vs:term_status="testing" rdfs:label="interest" rdfs:comment="A page about a topic of interest to this person."> <!-- we should distinguish the page from the topic more carefully. danbri 2002-07-08 --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/topic_interest" vs:term_status="testing" rdfs:label="topic_interest" rdfs:comment="A thing of interest to this person."> <!-- we should distinguish the page from the topic more carefully. danbri 2002-07-08 --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/publications" vs:term_status="testing" rdfs:label="publications" rdfs:comment="A link to the publications of this person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <!-- by libby for ILRT mappings 2001-10-31 --> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/currentProject" vs:term_status="testing" rdfs:label="current project" rdfs:comment="A current project this person works on."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/pastProject" vs:term_status="testing" rdfs:label="past project" rdfs:comment="A project this person has previously worked on."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Person"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/fundedBy" vs:term_status="archaic" rdfs:label="funded by" rdfs:comment="An organization funding a project or person."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/logo" vs:term_status="testing" rdfs:label="logo" rdfs:comment="A logo representing some thing."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/topic" vs:term_status="testing" rdfs:label="topic" rdfs:comment="A topic of some page or document."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/page"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/primaryTopic" vs:term_status="stable" rdfs:label="primary topic" rdfs:comment="The primary topic of some page or document."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/isPrimaryTopicOf"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/focus" vs:term_status="testing" rdfs:label="focus" rdfs:comment="The underlying or 'focal' entity associated with some SKOS-described concept."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2004/02/skos/core#Concept" rdfs:label="Concept"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/isPrimaryTopicOf" vs:term_status="stable" rdfs:label="is primary topic of" rdfs:comment="A document that this thing is the primary topic of."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/primaryTopic"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/page" vs:term_status="testing" rdfs:label="page" rdfs:comment="A page or document about this thing."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> <owl:inverseOf rdf:resource="http://xmlns.com/foaf/0.1/topic"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/theme" vs:term_status="archaic" rdfs:label="theme" rdfs:comment="A theme."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/account" vs:term_status="testing" rdfs:label="account" rdfs:comment="Indicates an account held by this agent."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/holdsAccount" vs:term_status="archaic" rdfs:label="account" rdfs:comment="Indicates an account held by this agent."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/accountServiceHomepage" vs:term_status="testing" rdfs:label="account service homepage" rdfs:comment="Indicates a homepage of the service provide for this online account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/accountName" vs:term_status="testing" rdfs:label="account name" rdfs:comment="Indicates the name (identifier) associated with this online account."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/OnlineAccount"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/member" vs:term_status="stable" rdfs:label="member" rdfs:comment="Indicates a member of a Group"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Group"/> <rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/membershipClass" vs:term_status="unstable" rdfs:label="membershipClass" rdfs:comment="Indicates the class of individuals that are a member of a Group"> <!-- maybe we should just use SPARQL or Rules, instead of trying to use OWL here --> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AnnotationProperty"/> <!-- Added to keep OWL DL from bluescreening. DON'T CROSS THE STREAMERS, etc. --> <!-- This may get dropped if it means non-DL tools don't expose it as a real property. Should be fine though; I think only OWL stuff cares about AnnotationProperty. Dan --> <!-- <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Group"/> prose only for now...--> <!-- <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> --> <!-- <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Class"/> --> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/birthday" vs:term_status="unstable" rdfs:label="birthday" rdfs:comment="The birthday of this Agent, represented in mm-dd string form, eg. '12-31'."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/age" vs:term_status="unstable" rdfs:label="age" rdfs:comment="The age in years of some agent."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/status" vs:term_status="unstable" rdfs:label="status" rdfs:comment="A string expressing what the user is happy for the general public (normally) to know about their current activity."> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/> <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/> </rdf:Property> </rdf:RDF>
Ok, so that was just a little painful, even I’ll admit it. In summary, OWL adds all kinds of useful features on top of RDF for example mathematical relationships such as disjointness, equivalence, inheritance, transitivity, symmetry, inverse and more.
A word on SKOS
SKOS is a specific vocabulary for defining OWL ontologies that is worth mentioning because it can relate synonymous terms, much in the same way that a thesaurus relates words in a spoken language (i.e. to show is the same as to display). As a similar example, you can map SKOS to FOAF to specify the relationships between a person’s various accounts, profiles and groups across the whole web, not just their profile or data from a single website.
You can validate your use of SKOS as a vocabulary using the following useful tool:
http://demo.semantic-web.at:8080/SkosServices/check
SPARQL
SPARQL Protocol and RDF Query Language (SPARQL) is a data language for performing information retrieval and management tasks on the “web of data” that is the Semantic Web. It allows complex combinations of data to be made to discover things that were previously not possible or practical, for example “Find me the homepage of anyone that Tim Berners-Lee knows”. The corresponding SPARQL query looks like:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX card: <http://www.w3.org/People/Berners-Lee/card#> SELECT ?homepage FROM <http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf> WHERE { card:i foaf:knows ?known . ?known foaf:homepage ?homepage . }
SPARQL will return results in XML by default (but can also return the same results as JSON, HTML or Plain Text). The result looks as follows:
<?xml version="1.0" encoding="utf-8"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="homepage"/> </head> <results> <result> <binding name="homepage"><uri>http://purl.org/net/eric/</uri></binding> </result> <result> <binding name="homepage"><uri>http://www.mellon.org/about_foundation/staff/program-area-staff/irafuchs</uri></binding> </result> <result> <binding name="homepage"><uri>http://heddley.com/edd/</uri></binding> </result> <result> <binding name="homepage"><uri>http://www.johnseelybrown.com/</uri></binding> </result> </results> </sparql>
We then need to transform the result to something human-readable, using either a high-level language (like Java, PHP, JavaScript, C#, etc) or even simpler, a transformation language that is built-in to most browesrs, yes good old eXtensible StyleSheet Language (XSL) which I’ve written a tutorial on before.
XSLT script to format SPARQL Query Results XML Format into xHTML (click below to expand):
<?xml version="1.0"?> <!-- Copyright © 2004, 2005 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University). All Rights Reserved. This work is distributed under the W3C® Software License [1] in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 Version 1 : Dave Beckett (DAWG) Version 2 : Jeen Broekstra (DAWG) Customization for SPARQler: Andy Seaborne Fix: > - <xsl:for-each select="//res:head/res:variable"> > + <xsl:for-each select="/res:sparql/res:head/res:variable"> --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:res="http://www.w3.org/2005/sparql-results#" exclude-result-prefixes="res xsl"> <!-- <xsl:output method="html" media-type="text/html" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" encoding="UTF-8"/> --> <!-- or this? --> <xsl:output method="xml" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" omit-xml-declaration="no" /> <xsl:template name="header"> <div> <h2>Header</h2> <xsl:for-each select="res:head/res:link"> <p>Link to <xsl:value-of select="@href"/></p> </xsl:for-each> </div> </xsl:template> <xsl:template name="boolean-result"> <div> <!-- <h2>Boolean Result</h2> --> <p>ASK => <xsl:value-of select="res:boolean"/></p> </div> </xsl:template> <xsl:template name="vb-result"> <div> <!-- <h2>Variable Bindings Result</h2> <p>Ordered: <xsl:value-of select="res:results/@ordered"/></p> <p>Distinct: <xsl:value-of select="res:results/@distinct"/></p> --> <table> <xsl:text> </xsl:text> <tr> <xsl:for-each select="res:head/res:variable"> <th><xsl:value-of select="@name"/></th> </xsl:for-each> </tr> <xsl:text> </xsl:text> <xsl:for-each select="res:results/res:result"> <tr> <xsl:apply-templates select="."/> </tr> </xsl:for-each> </table> </div> </xsl:template> <xsl:template match="res:result"> <xsl:variable name="current" select="."/> <xsl:for-each select="/res:sparql/res:head/res:variable"> <xsl:variable name="name" select="@name"/> <td> <xsl:choose> <xsl:when test="$current/res:binding[@name=$name]"> <!-- apply template for the correct value type (bnode, uri, literal) --> <xsl:apply-templates select="$current/res:binding[@name=$name]"/> </xsl:when> <xsl:otherwise> <!-- no binding available for this variable in this solution --> </xsl:otherwise> </xsl:choose> </td> </xsl:for-each> </xsl:template> <xsl:template match="res:bnode"> <xsl:text>_:</xsl:text> <xsl:value-of select="text()"/> </xsl:template> <xsl:template match="res:uri"> <xsl:variable name="uri" select="text()"/> <xsl:text><</xsl:text> <xsl:value-of select="$uri"/> <xsl:text>></xsl:text> </xsl:template> <xsl:template match="res:literal"> <xsl:text>"</xsl:text> <xsl:value-of select="text()"/> <xsl:text>"</xsl:text> <xsl:choose> <xsl:when test="@datatype"> <!-- datatyped literal value --> ^^<<xsl:value-of select="@datatype"/>> </xsl:when> <xsl:when test="@xml:lang"> <!-- lang-string --> @<xsl:value-of select="@xml:lang"/> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="res:sparql"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>SPARQLer Query Results</title> <style> <![CDATA[ h1 { font-size: 150% ; } h2 { font-size: 125% ; } table { border-collapse: collapse ; border: 1px solid black ; } td, th { border: 1px solid black ; padding-left:0.5em; padding-right: 0.5em; padding-top:0.2ex ; padding-bottom:0.2ex } ]]> </style> </head> <body> <h1>SPARQLer Query Results</h1> <xsl:if test="res:head/res:link"> <xsl:call-template name="header"/> </xsl:if> <xsl:choose> <xsl:when test="res:boolean"> <xsl:call-template name="boolean-result" /> </xsl:when> <xsl:when test="res:results"> <xsl:call-template name="vb-result" /> </xsl:when> </xsl:choose> </body> </html> </xsl:template> </xsl:stylesheet>
Then we finally get an HTML page output that the end user can actually interact with in their browser:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>SPARQL Query Results to XHTML (XSLT)</title> </head> <body> <h1>SPARQL Query Results to XHTML (XSLT)</h1> <div> <h2>Variable Bindings Result</h2> <table border="1"> <tr><th>homepage</th></tr> <tr><td>URI http://www.mellon.org/about_foundation/staff/program-area-staff/irafuchs</td></tr><tr><td>URI http://heddley.com/edd/</td></tr><tr><td>URI http://www.johnseelybrown.com/</td></tr><tr><td>URI http://purl.org/net/eric/</td></tr></table> </div> </body> </html>
Which the user of course finally sees as:
Pffewf, that took a while, but if you’re still with me congratulations! I wanted to cover all the main technologies involed in the so-called “Semantic Web stack” without alienating readers (not an easy task).
Datasets
Let’s summarize what we know at this point:
- HOW to structure our data (as an RDF building block)
- WHERE to look for models (OWL instructions)
- WHAT to do to combine our creations (using SPARQL glue to patch built models together in interesting new ways)
From the very introduction of the article, we also learned:
- WHO founded the web (and the vision for a more Semantic version of it)
- WHY the web became so popular (and how that popularity makes the Semantic Web all the more important to help people from drowning in a sea of data, choices and networks)
So what are we missing?
- HOW do we start building the Semantic Web today?
The answer is: we already are; by following the tenets of the Linked Open Data movement we are indeed slowly but surely building the Semantic Web envisioned by Sir Tim Berners-Lee. The best way we can continue to build the Semantic Web going forward is to utilize the technologies mentioned above, and whenever possible, to share or link some unique dataset that was not yet linked in the current Linked Data cloud.
You’ll have to hurry up though, the opportunity to become an expert or curator in any given dataset is starting to pass you by, don’t let your business get left out in the cold. Here is the growth of the Linked Data Cloud (and thus the Semantic Web) over the past 5 years, from 2007 through until 2012 (but not yet including the latest data from 2012):
I think you get my point. The Semantic Web is no longer just some fringe research activity for academics and tech geeks, this is a fundamental revolution in business, software and information sharing and transparency across every industry.
Conclusion
The Semantic Web is something that we should be able to sell to our bosses, managers, budgeting departments, marketing and legal teams or else we may live to regret it as our companies get left behind by more agile and innovative firms who’ve done the research and work the major enterprises have been unwilling to do in the past. At this point, SW and LOD may never be relegated to the world of academia and basement hackers again (just like the story of Aladdin not being able to put the genie back in the bottle, we’re now past the point of no return).
Luckily though, there has never been as good a time to start working on or incorporating Semantic Web technologies into your products and services, as more useful resources and increasingly mature tools emerge for simplifying the complexities of a large web software stack which is at its core, actually, quite a simple concept: share and share-alike.
REFERENCES:
http://www.labnol.org/internet/web-3-concepts-explained/8908/
http://tomheath.com/blog/2009/03/linked-data-web-of-data-semantic-web-wtf/
http://infomesh.net/2001/swintro/
http://www.ftrain.com/google_takes_all.html
http://semanticweb.com/the-best-introductions-to-the-semantic-web_b643
http://www.cambridgesemantics.com/semantic-university/sparql-by-example