Shared publicly  - 
 
Simple Linked Data Deployment via Turtle Docs using various Storage Services

Over the years, there has be a persistent misconception about Linked Data deployment. Basically, the assumption has always been that publishing structured data in this manner was complex and only achievable via specialist programmers. This post is all about put this misconception to bed, once and for all, hopefully. 

What is Data?

Subject observations.

Every observed Entity (Thing) is a basically a Subject endowed with discernible characteristics (Attributes) in the eyes of its observer. 

What is Structured Data?

For Data to be structured, its representation (on paper or in digital form) needs to make the following discernible to humans and machines: Subject Name (or ID), Subject Attributes, and Subject Attribute Values. 

What is Linked Data?

Webby structured data representation is about the incorporation of Hyperlinks into the act of structured data representation. This is achieved by denoting a Subject, its Attributes, and its Attribute values (optionally)    
using Hyperlinks. 

Data constructed in the manner outline above makes the act of creating data identical to the act of creating an actual Web page. Net effect, you end up with a new kind of Web document bearing content that serves the sole purpose of describing one or more subjects. In a sense, your are constructing profile documents for entities (things) that opens up a new dimension of Web exploitation. Of course, when these kinds of documents are published to the World Wide Web you end up with a Web of Linked Data, a Data Web, or a Giant Global Graph of Data. 

What is HTTP based Linked Data?

The subject of a meme [1] by +Tim Berners-Lee (TimBL) outlining how the basic concept outlined above is achievable by leveraging the Architecture of the World Wide Web (AWWW) and W3C standards.Thus,  you end up with extermely powerful Web-scale Linked Data that also brings other aspects of the Web's potential to the foreground of Web application development and deployment. 

How Do I Construct HTTP based Linked Data Documents?

When creating document content you have a number of syntaxes at your disposal such as: Turtle, N3, N-Triples, HTML+Microdata, (X)HTML+RDFa, JSON-LD, RDF/XML etc., to name a few. 

With regards to the context of this post, Turtle [2] is the syntax that's easiest to read and deploy.

A Simple Profile Document comprised of Turtle content

What follows is a Turtle document that expresses the following:

<> is a Web document (note that in Turtle: <> expands to the eventual URL of this document) .
The Web document is titled "Simple Turtle File That Describes Entity: kidehen " .
It has a commment "Simple Turtle File That Describes Entity: kidehen " .
It has a primary topic .
It was made by by an entity denoted as :this (which really expands to the eventual URL of this document + Fragment Identifier [#] + "this").
:this is a Person (means: :this denotes an entity of type person).
:this is described by the content of this Web document.
:this is denoted (named) literally as "Kingsley Uyi Idehen" .
:this has the nickname "kidehen". 
:this owl:sameAs (also has the denotation/name) <http://kingsley.idehen.net/dataspace/person/kidehen#this> .
:this owl:sameAs (also has the denotation/name) <http://id.myopenlink.net/dataspace/person/KingsleyUyiIdehen#this> .
:this owl:sameAs (also has the denotation/name) <http://myopenlink.net/dataspace/person/kidehen#this> .
:this owl:sameAs (also has the denotation/name) <http://graph.facebook.com/605980750#> .
:this foaf:page (has a Web page) <http://graph.facebook.com/kidehen> .
:this foaf:page (has a Web page) <http://twitter.com/kidehen> .
:this foaf:page (has a Web page) <https://plus.google.com/112399767740508618350/about> .
:this foaf:page (has a Web page) <http://www.openlinksw.com/blog/~kidehen> . 
:this foaf:knows (claims to know the following denoted/named entities ) <http://www.w3.org/People/Berners-Lee/card#i>, <http://bblfish.net/people/henry/card#me>, <http://melvincarvalho.com/#me>, <http://www.turnguard.com/turnguard>, <https://my-profile.eu/people/deiu/card#me>, <http://webr3.org/nathan#me> .


Actual Turtle Document & Its Content: 

##### Starts Here #####
# Note: the hash is a comment character in Turtle
# Content start
# You can save this to a local file. In my case I use Local File Name: kingsley.ttl .
# Actual Content:

# prefix decalaration that enable the use of compact identifiers instead of fully expanded HTTP URIs.

@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix wdrs: <http://www.w3.org/2007/05/powder-s#> .
@prefix opl: <http://www.openlinksw.com/schemas/cert#> .
@prefix cert: <http://www.w3.org/ns/auth/cert#> .
@prefix:<#>.

# Profile Doc Stuff

<> a foaf:Document . 
<> rdfs:label "DIY Linked Data Doc About: kidehen" .
<> rdfs:comment "Simple Turtle File That Describes Entity: kidehen " .

# Entity Me Stuff

<> foaf:primaryTopic :this .
<> foaf:maker :this .
:this a foaf:Person . 
:this wdrs:describedby <> . 
:this foaf:name "Kingsley Uyi Idehen" .
:this foaf:firstName "Kingsley" .
:this foaf:familyName "Idehen" .
:this foaf:nick "kidehen" .
:this owl:sameAs <http://kingsley.idehen.net/dataspace/person/kidehen#this> .
:this owl:sameAs <http://id.myopenlink.net/dataspace/person/KingsleyUyiIdehen#this> .
:this owl:sameAs <http://myopenlink.net/dataspace/person/kidehen#this> .
:this owl:sameAs <http://graph.facebook.com/605980750#> .
:this foaf:page <http://graph.facebook.com/kidehen> .
:this foaf:page <http://twitter.com/kidehen> .
:this foaf:page <https://plus.google.com/112399767740508618350/about> .
:this foaf:page <http://www.openlinksw.com/blog/~kidehen> . 
:this foaf:knows <http://www.w3.org/People/Berners-Lee/card#i>, <http://bblfish.net/people/henry/card#me>, <http://melvincarvalho.com/#me>, <http://www.turnguard.com/turnguard>, <https://my-profile.eu/people/deiu/card#me>, <http://webr3.org/nathan#me> .

# Entity Me: Identity & WebID Stuff 

#:this cert:key :pubKey .
#:pubKey a cert:RSAPublicKey;
# Public Key Exponent
# :pubkey cert:exponent "65537" ^^ xsd:integer;
# Public Key Modulus
# :pubkey cert:modulus "d5d64dfe93ab7a95b29b1ebe21f3cd8a6651816c9c39b87ec51bf393e4177e6fc2ee712d92caf9d9f1423f5e65f127274529a2e6cc53f1e452c6736e8db8732f919c4160eaa9b6f327c8617c40036301b547abfc4c5de610780461b269e3d8f8e427237da6152ac2047d88ff837cddae793d15427fa7ce067467834663737332be467eb353be678bffa7141e78ce3052597eae3523c6a2c414c2ae9f8d7be807bb3fc0d516b8ecd2fafee4f20ff3550919601a0ad5d29126fb687c2e8c156f04918a92c4fc09f136473f3303814e183185edf0046e124e856ca7ada027345e614f8d665f5d7172d880497005ff4626c2b0f2206f7dce717e4f279dd2a0ddf04b" ^^ xsd:hexBinary .

# :this opl:hasCertificate :cert .
# :cert opl:fingerprint "640F9DD4CFB6DD6361CBAD12C408601E2479CC4A" ^^ xsd:hexBinary;
#:cert opl:hasPublicKey "d5d64dfe93ab7a95b29b1ebe21f3cd8a6651816c9c39b87ec51bf393e4177e6fc2ee712d92caf9d9f1423f5e65f127274529a2e6cc53f1e452c6736e8db8732f919c4160eaa9b6f327c8617c40036301b547abfc4c5de610780461b269e3d8f8e427237da6152ac2047d88ff837cddae793d15427fa7ce067467834663737332be467eb353be678bffa7141e78ce3052597eae3523c6a2c414c2ae9f8d7be807bb3fc0d516b8ecd2fafee4f20ff3550919601a0ad5d29126fb687c2e8c156f04918a92c4fc09f136473f3303814e183185edf0046e124e856ca7ada027345e614f8d665f5d7172d880497005ff4626c2b0f2206f7dce717e4f279dd2a0ddf04b" ^^ xsd:hexBinary .

### Ends or Here###


Upload File To Different Web Locations

Remember, this post is all about dead simple Linked Data deployment. Thus, the only publication prerequisite is access to a document placement location on the Web (or your internal HTTP network) for which you possess read-write privileges. That's it! You don't have to deal with Web server configuration, content negotiation, hash vs slash URIs etc.. 

Amazon S3, DropBox, and our own ODS-Briefcase (ODrive) are examples of Web resource publication and sharing services that also handle resource types beyond images and html. For instance, you can upload text files to these services and not have them regugitated as HTML when accessing them via publication URLs. 

At the current time, services such as Microsoft SkyDrive, Box.net, and GoogleDrive all lack the ability to handle resource types beyond HTML and images. Thus, you need to place their resources behind a wrapper/shim/proxy layer as delivered by our ODrive. 

Deployment using DropBox

Upload your local Turtle file to a DropBox folder which results in the following:

* Linked Data Document URL/URI: https://dl.dropbox.com/u/11096946/Linked%20Data%20Resources/kingsley.ttl 

* Linked Data Document Primary Topic (Subject) URI: https://dl.dropbox.com/u/11096946/Linked%20Data%20Resources/kingsley.ttl#this -- note the URI is used as the hyperlink that anchors the text following "About:"

* Linked Data Browser Page URL/URI: http://linkeddata.uriburner.com/about/html/https/dl.dropbox.com/u/11096946/Linked%20Data%20Resources/kingsley.ttl -- which shows the immediate effects of this "deceptively simple" approach to Linked Data deployment. For full effect, just follow-your-nose by clicking on any of the links. 

Deployment using an Amazon S3 Bucket

Upload your local Turtle file to an Amazon S3 bucket which results in the following:

* Linked Data Document URI: https://s3.amazonaws.com/webid-sandbox/kingsley.ttl 

* Linked Data Document Primary Topic (Subject) URI: https://s3.amazonaws.com/webid-sandbox/kingsley.ttl#this

* Linked Data Browser Page URI: http://linkeddata.uriburner.com/about/html/https/s3.amazonaws.com/webid-sandbox/kingsley.ttl -- just follow-your-nose by clicking on any of the links.

Deployment using ODS-Briefcase (ODrive)

Upload your local Turtle file to an ODrive folder which results in the following:

* Linked Data Document URI: http://kingsley.idehen.net/home/kidehen/Public/kingsley.ttl 

* Linked Data Document Primary Topic (Subject) URI: http://kingsley.idehen.net/home/kidehen/Public/kingsley.ttl#this

* Linked Data Browser Page URI: http://linkeddata.uriburner.com/about/html/http/kingsley.idehen.net/home/kidehen/Public/kingsley.ttl -- just follow-your-nose by clicking on any of the links.


Deployment using Google Drive via ODrive Mount

Upload your Turtle document to a Google Drive hosted folder. Then mount said folder into your ODrive and set the mime type to: text/turtle, using the ODrive UI for resource property management. The end result of these actions leaves you with the following:

* Linked Data Document URI: http://kingsley.idehen.net/home/kidehen/Public/GoogleDrive/Linked%20Data%20Resources/kingsley.ttl 

* Linked Data Document Primary Topic (Subject) URI: http://kingsley.idehen.net/home/kidehen/Public/GoogleDrive/Linked%20Data%20Resources/kingsley.ttl#this

* Linked Data Browser Page URI: http://linkeddata.uriburner.com/about/html/http/kingsley.idehen.net/home/kidehen/Public/GoogleDrive/Linked%20Data%20Resources/kingsley.ttl -- just follow-your-nose by clicking on any of the links.

Deployment using Microsoft SkyDrive via ODrive Mount

Upload your Turtle document to a SkyDrive hosted folder. Then mount said folder into your ODrive and set the mime type to: text/turtle, using the ODrive UI for resource property management. The end result of these actions leaves you with the following:

* Linked Data Document URI: http://kingsley.idehen.net/home/kidehen/Public/SkyDrive/Public/Linked%20Data%20Resources/kingsley.ttl

* Linked Data Document Primary Topic (Subject) URI: http://kingsley.idehen.net/home/kidehen/Public/SkyDrive/Public/Linked%20Data%20Resources/kingsley.ttl#this

* Linked Data Browser Page URI: http://linkeddata.uriburner.com/about/html/http/kingsley.idehen.net/home/kidehen/Public/SkyDrive/Public/Linked%20Data%20Resources/kingsley.ttl -- just follow-your-nose by clicking on any of the links.

Deployment using Box.Net via ODrive Mount

Upload your Turtle document to a Box.net hosted folder. Then mount said folder into your ODrive, and set the mime type to: text/turtle, using the ODrive UI for resource property management. The end result of these actions leaves you with the following:

* Linked Data Document URI: http://kingsley.idehen.net/home/kidehen/Public/BoxNet/Public/kingsley2.ttl 

* Linked Data Document Primary Topic (Subject) URI: http://kingsley.idehen.net/home/kidehen/Public/BoxNet/Public/kingsley2.ttl#this

* Linked Data Browser Page URI: http://linkeddata.uriburner.com/about/html/http/kingsley.idehen.net/home/kidehen/Public/BoxNet/Public/kingsley2.ttl -- just follow-your-nose by clicking on any of the links.

Conclusion

When you get past the noise and distortions around Web-scale Linked Data you'll realize that its much easier to craft and deploy then HTML while delivering superior benefits to your points of Web presence. 

Remember, the Web is ultimately about being able to find relevant data, information, and knowledge with ever increasing precision and serendipity. 


1. Rocket Science
2. Full Employment Act For Programmers
3. Dependent on Web Server Administration Skills
4. Dependent on Domain Ownership & Control
5. Something You Should Overlook.

Links

1. http://www.w3.org/TeamSubmission/turtle/ -- Turtle Syntax Spec

2. http://www.w3.org/DesignIssues/LinkedData.html -- TimBL's AWWW & W3C standards oriented Linked Data meme

3. http://bit.ly/M0LWTo -- using ODS-Briefcase (ODrive) to mount Google Drive hosted resources

4. http://bit.ly/QhTUru -- using ODS-Briefcase (ODrive) to mount Box.net hosted resources

5. http://bit.ly/Qacd33 -- using ODS-Briefcase (ODrive) to mount DropBox hosted resources

6. http://bit.ly/NNoAyP -- using ODS-Briefcase (ODrive) to mount Microsoft SkyDrive hosted resources

7. http://bit.ly/NuLA7f -- using ODS-Briefcase (ODrive) to mount Amazon S3 bucket hosted resources 

8. http://slidesha.re/M9CXL3 -- understand Linked Data and the Linked Open Data Cloud 

9. http://slidesha.re/UGg18k -- connecting Linked Data, RDF, Semantic Web, and Big Data. 

#LinkedData #WebID #Web30 #Web20 #SemanticWeb  #BigData #Web30
6
2
Slava Kravchenko's profile photoYury Katkov's profile photoKingsley Idehen's profile photo
5 comments
 
In my opinion the prefixes in Turtle should be introduced not in the very beginning. For my students I simply use full URLs in the beginning so that everyone can understand that there are only URLs and literals in the Turtle document
 
+Katkov Yury -- Yes, valid points!  In the past I would have made these examples using N-Triples. Problem is that N-Triples doesn't handle "relative URIs" which are the magic sauce for deploying Linked Data in a way that keeps the following out of the conversation:

1. Domain Ownership and Control
2. Web Server Control & Administration
3. httpRange-14 matters re. how to denote Web resources, real-world entities, and abstract concepts. 

Put differently, Turtle is the best option for deploying Linked Data via the storage services provided by Amazon S3, DropBox, Google Drive, Microsoft SkyDrive, and Box.net. These services remove the need for Web Server and domain control, so you can use good old file creation and save patterns to deploy Linked Data :-)
Add a comment...