<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webr3.org &#187; linked data</title>
	<atom:link href="http://webr3.org/blog/tag/linked-data/feed/" rel="self" type="application/rss+xml" />
	<link>http://webr3.org/blog</link>
	<description>brain&#039;s on fire!</description>
	<lastBuildDate>Tue, 19 Jul 2011 15:38:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Uniform Data</title>
		<link>http://webr3.org/blog/semantic-web/uniform-data/</link>
		<comments>http://webr3.org/blog/semantic-web/uniform-data/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 17:49:16 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[semantic web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[deployable technologies]]></category>
		<category><![CDATA[deployed technology]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[mobile devices]]></category>
		<category><![CDATA[Ontology]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[RDFLib]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic web adoption]]></category>
		<category><![CDATA[semantic web compatible]]></category>
		<category><![CDATA[sensor networks]]></category>
		<category><![CDATA[social web]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Versa]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[Web Ontology Language]]></category>
		<category><![CDATA[Web services]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XML schema]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=488</guid>
		<description><![CDATA[Why a need for uniform data?
a) The web is currently converging around web applications and mobile devices, a lot of focus is being placed on sensor networks, internet of things, and augmented reality to display information. Simply, how can these applications make use of published data readily from multiple sources if that data is not [...]]]></description>
			<content:encoded><![CDATA[<h3>Why a need for uniform data?</h3>
<p>a) The web is currently converging around web applications and mobile devices, a lot of focus is being placed on sensor networks, internet of things, and augmented reality to display information. Simply, how can these applications make use of published data readily from multiple sources if that data is not in a uniform standard?</p>
<p>b) The core web which people use on a daily basis is ever more silo focussed, and the size of those silo's is ever increasing - the social sector is a great example of this, and whilst there are core movements to create a more federated and distributed social web, a key blockage in the way is a lack of uniform data, often new formats are being developed, or poorly modelled application (rather than domain) specific models are making it out on to the web, and interoperability is several times harder than it could be, given the presence of uniform data. This has significant social and economic repercussions.</p>
<p>c) Time, a significant amount of time is invested daily by thousands (if not millions) in to re-solving the same old problems, creating a schema for this, a model for that, learning the same lessons countless people have learned before them, often the learning curve spans several years. A standard way to publish and share reusable model specific schemas (/not/ format specific like XML schema and JSON schema) would save vast amounts of developer time per annum. In addition to having significant economic impacts this would also lend to far more innovation (since more time free to innovate!) within an already important and innovative sector.</p>
<h3>Why not "plain" RDF?</h3>
<p>RDF has failed to be understood, adopted or loved by the general masses of the web, even many who use RDF often do not fully understand it and have many issues. Adoption has been... let's just say not good.</p>
<p>There are 3196 APIs on ProgrammableWeb, out of those:</p>
<ul>
<li>2152 produce XML</li>
<li>1255 produce JSON</li>
<li>36 produce RDF</li>
</ul>
<p>Perhaps more indicative though, is that those 36 are spread over 6 years, with only 1 updated so far this year, meanwhile there have been 58 new JSON based APIs in the last month alone.</p>
<p>Over on stack overflow, there have been 1,569,512 questions asked, 273 that's 0.017% of them, are RDF related.</p>
<p>The numbers are pretty clear, for all RDF's merits, and the countless benefits of the uniformity of RDF, it's just not being adopted.</p>
<p>To use RDF correctly requires RDF tooling, and not just tooling to parse the data (like JSON, and common usage of XML), but to use the data, to handle triples and graphs and queries, all of which requires significant investment in skills, time, and deployable technologies.</p>
<p>Further more, RDF data published using multiple different ontologies is difficult for people to use, the infrastructure and tooling simply doesn't exist to follow ones nose around the web and make practical use of several thousand different ontologies, that level of understanding is  a good generation away, and for now all it does is serve as a blockage to adoption, and primarily as a blockage to people actually using or presenting the data. Time and time again we have seen a rallying around core ontologies, with successful mixing and matching happening more at the ontology level, than the data level. For now applications will be looking for mentions of Classes and Properties they "understand" (have a hard coded usage for).</p>
<p>Additionally, these difficulties in usage have lead to a second layer of centralization on the web, one which was borne from RDF, and rather ironically many of the architectural benefits of uniformity and universality are being lost. That is SPARQL, we are seeing a huge increase in SPARQL enabled datastores on the web, each of which holds a specific set of data, and each of which has key resource limitations. Practically this means that:<br />
 - clients are tightly coupled to servers<br />
 - all processing and storage weight is being handled by the servers<br />
 - data on the wire is non uniform<br />
 - clients are not using the web of data, rather they are using a datasource on the web, a datasilo.<br />
This is a pattern which is not optimized for anybody, servers, clients, developers, data, the web, the network.</p>
<p>The core benefits of a web of linked data have not realized, RDF has failed to deliver them, primarily due to complexity and tooling requirements. SPARQL (positioned on the server/silo) is only compounding matters. That's not to say it cannot deliver them, or that these technologies are bad, only that they have not delivered the core benefits, yet.</p>
<p>Perhaps another way to put it, is that if you break things like RDBMS and Classes and Objects down you can get to triples of some sort (EAV, RDF, or to atomic relations / predicate based logic), and RDF did just this, however it was done in such a way that the data format (RDF) required a full new stack of technologies to /use/ the data, rather than being a uniform data format acting as a bridge between say classes and objects and RDBMS, a webized data model; that is to say, you can't really use "it" (RDF, the model people don't really speak of) with 95% of the deployed technology out there, you can provide an RDF view of the data from that technology, map it to RDF, but you cannot easily pull it back in and use it, and unusable data, isn't much use. There are many shades of grey between, but it's certainly more at the unusable end of the spectrum.</p>
<h3>What can we do?</h3>
<p>If we look at what people already do, a large proportion of web developers (most) continue to publish data via web services as XML and JSON, the common process is simple, create a schema, document it somewhere out of band (perhaps call it API documentation), publish data using that schema in some arbitrary way as XML and JSON. On the client side the same process continues, find a new API, get an XML or JSON parser, map the data as described by the API to some classes and start using it. All of this is needless work, they are showing us what works, what they can do, and how they can work with data easily. Tersely, they are missing the benefits of Uniform Data.</p>
<p>We can bring the benefits of uniform data to the current web 2.0, class and objects, rdbms, xml and json focussed web.</p>
<p>We can not only address these core issues, and bring the benefits of linked data and the semantic web to the general developer population, but we can also:<br />
 - ensure it's RDF and traditional semantic web compatible (giving "us" mountains of useful every-day data)<br />
 - provide that clear migration path to the "full" semantic web that's missing now.<br />
 - increase semantic web adoption exponentially, bringing big benefits without the high cost.</p>
<h3>Approaches</h3>
<p>There are two key approaches I can personally see to this:</p>
<ol>
<li>Webize Classes and Objects (Java style POJOs, Data Objects, subset of UML)</li>
<li>Provide a Classes and Objects view over RDF</li>
</ol>
<p>The first of these approaches - providing an abstract syntax for classes and objects and then defining mappings for that to XML and JSON - would bring the benefits of OWL 2 and XSD to schemas, and the benefits of "linked data" to both the schemas (/class blueprints) and instance data. It would allow data validation rules to be augmented on from sources external to the schema, it could be codified in libraries across multiple languages, it could also serve as a translation layer between Classes and Objects, NoSQL, and RDBMS, and other formats such as CSV. Additionally it would lend each schema openly being mapped to vendor specific databases, as well as vendor neutral schemas such as ANSI SQL. Furthermore, it would also lend to innovation in each layer, for example standardized queries for each kind of data could be created, with translations of those to each specific vendor or to well defined standardized languages, and even codified to work in memory in libraries (for example within instance methods or to run on GPU enabled hardware and languages). Many benefits could come from webizing what the masses already do. Other examples include providing an opportunity to refine the core datatypes on the web in a serialization agnostic way (think xsd types merged with webidl types), ensuring the correct entailments for equality are baked in to the core, providing first level support for things like lists and sets, providing a foundation upon which diff, patch, versioning can all be accomplished, providing canonicalized forms so that encryption and a data signing can be accomplished... and more I'm sure.</p>
<p>The second of these approaches has less wide scale benefits, but would provide a more usable abstraction layer on top of RDF, which is currently (dare I say painfully) missing. This would ultimately make working with data more familiar, a codified example could be:</p>
<pre><code>
var person = new Class('foaf:Person');      // external class definitions loaded from the web
person.load('http://example.org/bob#me');   // instance data loaded
print(person.name);                         // simple access to pre-known properties
person.validate();                          // in built validation from OWL 2
                                            // and XSD data type restrictions

// work with a schema class at a time..

var man = new Class('gender:Male');         // different class for different data
man.load('http://example.org/bob#me');      // same data
print(man.wife);                            // different, domain specific properties
man.expand();                               // full entailment regimes support to get
                                            // the most from schema definitions 

</code></pre>
<p>The best approach will become clear as time progresses, for now I'm keen and happy to work on either or both.</p>
<p>Just some musings..</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/semantic-web/uniform-data/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Generic to do plan</title>
		<link>http://webr3.org/blog/general/generic-to-do-plan/</link>
		<comments>http://webr3.org/blog/general/generic-to-do-plan/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 14:26:51 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[auth/ident protocol]]></category>
		<category><![CDATA[client side w/ stateless protocols]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[double-agent based auth/ident protocol]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[http client+cache+server]]></category>
		<category><![CDATA[intelligent agent]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[p2p]]></category>
		<category><![CDATA[p2p web]]></category>
		<category><![CDATA[personal data management]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDF query language]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[side w/ stateless protocols]]></category>
		<category><![CDATA[Skullcandy Double Agent Portable Audio Device]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[temporally valid webid-like protocol]]></category>
		<category><![CDATA[Turtle]]></category>
		<category><![CDATA[web application state]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[webid-like protocol]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=423</guid>
		<description><![CDATA[Personal high level to-do list for the next x amount of time ahead...
To do:
Update rdfa-api to align with the RDF API, add full Graph Literal support, add RDFa 1.1 Core parser + profile support, finish generic HTTP based CRUD clients, merge with JS3.
Upgrade to support full N3, work on rule, reasoning and inference methods with [...]]]></description>
			<content:encoded><![CDATA[<p>Personal high level to-do list for the next x amount of time ahead...</p>
<p><strong>To do:</strong><br />
Update rdfa-api to align with the RDF API, add full Graph Literal support, add RDFa 1.1 Core parser + profile support, finish generic HTTP based CRUD clients, merge with JS3.</p>
<p>Upgrade to support full N3, work on rule, reasoning and inference methods with OWL and rdfs support + sl/ql/fol based approaches, basic and improving understanding of ontologies, including restriction and owl based data validation.</p>
<p>Spec and upgrade to RDF Object View, spec and implement bi-direction oo-friendly tree views of RDF.</p>
<p>N3 Paths, RDF Selectors (and maybe SPARQL implementation?).</p>
<p>Create hook-in predicate, class and rule based agent framework for data streams and graphs, on top of aforementioned tooling - agents which listen for specific types of data / sets of statements and then do what's needed - to handle simple reflex, model-based reflex, goal-based and utility based intelligent agents.</p>
<p>Combine intelligent agent framework with data wiki support to create intelligent cloud storage agents, personal data streams and helper agents. (agent per uri, each agent has a task, collection of semi-dumb agents in to a data space makes a semi-intelligent agent).</p>
<p>Work on double-agent based auth/ident protocol - four-party, decentralized, temporally valid, webid-like protocol, with built in foothold for trust - details soon.</p>
<p>Leverage HTTP POST for storage / triple accepting agents in a "document which accepts annotations" style. Implement + compare and contrast SPARQL update vs Diff/Path approach.</p>
<p>Web Socket based triple &#038; rdf object streams for personal data streams, filtered data streams, data synchronization and updates.</p>
<p>Generic linked data client side agents for specific tasks - basic social clients (messaging, friend adding, personal data management), and generic apps (like good-relations based client side basket which works on any site), shift of web application state to client side w/ stateless protocols and semi-intelligent agents at both sides.</p>
<p><strong>side topics:</strong><br />
- micropayments via payswarm, open transactions, bitcoin.<br />
- convergence of RDF libs and tooling for interoperability based on standardizing apis.<br />
 - p2p web / web architecture &#038; movements on persistent domains, alternative approaches to resolvability/dns, bidirectional/back links.<br />
 - More amaya-like browsers/user agents, desktop based http client+cache+server in one efforts.<br />
 - RDF serializations (Turtle+Graph Literals ala AMORD in RDF, JSON based serializations / json-ld).</p>
<p><strong>primary long term focus being the convergence of:</strong><br />
- read write acl enabled web of data<br />
- "intelligent" / semantic agents<br />
- internet of things<br />
- augmented reality and innovations/improvements in device + human interface sectors.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/generic-to-do-plan/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Opening Linked Data</title>
		<link>http://webr3.org/blog/linked-data/opening-linked-data/</link>
		<comments>http://webr3.org/blog/linked-data/opening-linked-data/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 11:51:29 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Blank node]]></category>
		<category><![CDATA[Computer file formats]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[King]]></category>
		<category><![CDATA[Knowledge representation]]></category>
		<category><![CDATA[Markup languages]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Procedural programming languages]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[RDF/XML]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[registered media]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[sem web community]]></category>
		<category><![CDATA[Semantic HTML]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[the king]]></category>
		<category><![CDATA[Turtle]]></category>
		<category><![CDATA[Twitter Inc]]></category>
		<category><![CDATA[typical web developer]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[URI scheme]]></category>
		<category><![CDATA[web developer]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[Web services]]></category>
		<category><![CDATA[web standard format]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=390</guid>
		<description><![CDATA[Linked Data has done fantastically well so far, but, compared to how well it could be doing, given the calibre and amount of data that's been opened up, it's not doing too well at all.
Why? well the sem web community is packed full of the most technically skilled and decent people I've come across so [...]]]></description>
			<content:encoded><![CDATA[<p>Linked Data has done fantastically well so far, but, compared to how well it could be doing, given the calibre and amount of data that's been opened up, it's not doing too well at all.</p>
<p>Why? well the sem web community is packed full of the most technically skilled and decent people I've come across so far, so it can't be that, the tooling is pretty damn good, there's loads of data, most of the data's of a high quality, wanted by developers, and certainly more than usable. The concepts, theory and technical aspects are all solid as a rock. In short it's all good, apart from one rather important detail.</p>
<p>Our Linked Open Data isn't really open data, not in the eyes of the common web developer at least. To most web developers on the planet, open data is something they can get access to and use easily.</p>
<p>A good example of 'open data' for most developers, is the Twitter API.</p>
<p>Here's how a developer accesses it in PHP:</p>
<pre><code>  $uri = 'http://api.twitter.com/1/statuses/show/7907258268647424.json';
  $tweet = json_decode(file_get_contents($uri));
  echo $tweet->user->description;
</code></pre>
<p>Here's how they access it in Javascript:</p>
<pre><code>  uri = 'http://api.twitter.com/1/statuses/show/7907258268647424.json';
  $.getJSON(uri, function(tweet) {
    write( tweet.user.description );
  });
</code></pre>
<p>The reality of the matter is that you can't do this with Linked Open Data, and that's because you can't do it with RDF - and really, honestly, if it's not that simple, the masses won't use it, because, if it's not that simple, they <i>can't</i> use it.</p>
<h3>The problems with the RDF formats</h3>
<p>They're not perfect, and they are a very mixed bunch, for a change, let's look at the negatives.</p>
<p><strong>RDF/XML</strong><br />
 - Requires full XML tooling<br />
 - Can't read or write by hand<br />
 - butt ugly</p>
<p>Let's be honest, unless you have a full XML and RDF stack and you know what you're doing, RDF/XML is simply a no go zone.</p>
<p><strong>RDFa</strong><br />
 - Requires HTML/DOM/XML tooling<br />
 - An extension to a markup language, designed to augment annotated documents.</p>
<p>RDFa is great, but not for the general <i>data</i> use case, it's not a simple data interchange format like JSON, and you can't publish or consume it without specialist tooling, in fact it requires an even bigger, more complicated, stack than RDF/XML.</p>
<p><strong>Turtle</strong><br />
 - Requires a custom parser<br />
 - It's not <i>yet</i> seen as a data format by the masses.<br />
 - Doesn't have a registered media type.</p>
<p>If we're all honest, Turtle is the king of RDF serializations, it's small, powerful, easy to write and read, requires minimal tooling to parse. In fact, I'd quite happily say that Turtle is the best all round data format, period.</p>
<p><strong>RDF/JSON and JSON-LD</strong><br />
 - Square peg, round hole</p>
<p>You can't shoe horn RDF in to JSON, no matter how hard you try - well, you <i>can</i>, but you loose all the benefits of JSON in the first place, because the data is RDF, triples and not objects, rdf nodes and not simple values - I fear I'd better explain, quickly:</p>
<p>The benefit of JSON is that you can do the following:</p>
<pre><code>  var u = tweet.user;                                // nested, simple objects
  write(u.message);                                  // simply "a string of text"
  if(u.geo_enabled) {                                // a boolean true
    var d = u.statuses_count * u.favourites_count;   // numbers..
  }
</code></pre>
<p>Anything more complicated than that and you've lost 95% of the benefits of JSON.</p>
<p>Here's the code to do that <code>if(u.geo_enabled)</code> with JSON/RDF:</p>
<pre><code>  var tweet = rdf['http://example.org/tweet/12343'];
  var user = rdf[tweet['http://example.org/property/userid']];
  var geoenabled = user['http://example.org/property/geo_enabled'];
  if( Boolean(geoenabled.value) ) {
</code></pre>
<p>and JSON-LD:</p>
<pre><code>  var tweet, user;
  for(o in jsonld) {
    if(jsonld[o]["@"] == 'http://example.org/tweet/12343') tweet = jsonld[o];
  }
  for(o in jsonld) {
    if(jsonld[o]["@"] == tweet['twit:userid']) user = jsonld[o];
  }
  if(user['twit:geo_enabled']) {
</code></pre>
<p>Remember, those two examples are only for the simple if line from the benefits of JSON example, can you even imagine all four lines?</p>
<p>Clearly, RDF in JSON is of little to no use to anybody, you can see plainly yourself, 95% of the benefits are lost and it's just another RDF serialization that's pretty much unusable without tooling. The only benefit JSON serializations of RDF have, are that you don't require an XML stack, which is quite a large benefit tbh.</p>
<h3>The problem with RDF</h3>
<p>I've been a little unfair there, you see the problem isn't with the serializations, we can't make a "better" serialization of RDF for general web developers, because the <i>real problem</i> is that the data's RDF, it's triples not simple objects, URIs rather than simple terms, RDF Nodes with a language or type, and not just simple values.</p>
<p>An array of RDF triples, or a structure of RDF, just simply isn't usable in most (all?) programming languages, by a typical web developer, without specialist tooling and libraries or APIs.</p>
<p>Am I saying RDF is bad? no of course not, it's awesomely brilliant in every way, it powers a paradigm shift and will have huge positive effects on the web and the human race. You know the score :)</p>
<p>What I am saying, is that we're not backwards compatible, we're not making our data open in formats which are usable by normal developers, developers who need and want the data, want the links, but not the semwebbery. Hell even most of us who are heavy sem web users only consider the ontology+reasoning side enabled by properties-with-uris some of the time, most of the time &lt;http://xmlns.com/foaf/0.1/name> might as well just be "name".</p>
<h3>Opening Linked Data</h3>
<p>So, here's what we need to do, we need to just accept that although we publish linked data as RDF, we also need to publish the data as simple objects so the world can use the data.</p>
<p>Given the linked data:</p>
<pre><code>  @prefix : &lt;http://webr3.org/nathan#> .
  @prefix foaf: &lt;http://xmlns.com/foaf/0.1/> .
  @prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#> .

  :me a foaf:Person;
    foaf:age 29;
    foaf:holdsAccount [ foaf:accountName "webr3";
        foaf:homepage &lt;http://twitter.com/webr3>;
        rdfs:label "Nathan's twitter account"@en ];
    foaf:homepage &lt;http://webr3.org>;
    foaf:knows &lt;http://example.com/bob#me>;
    foaf:name "Nathan";
    foaf:nick "webr3", "nath" .

  &lt;http://example.com/bob#me> a foaf:Person;
    foaf:name "Bob" .</pre>
<p></code></p>
<p>We <strong>also</strong> need to publish it like this:</p>
<pre><code>{
  "http://webr3.org/nathan#me": {
    "a": "http://xmlns.com/foaf/0.1/Person",
    "age": 29,
    "holdsAccount": {
      "accountName": "webr3",
      "homepage": "http://twitter.com/webr3",
      "label": "Nathan's twitter account"
    },
    "homepage": "http://webr3.org",
    "knows": "http://example.com/bob#me",
    "name": "Nathan",
    "nick": [ "webr3", "nath" ]
  },
  "http://example.com/bob#me": {
    "a": "http://xmlns.com/foaf/0.1/Person",
    "name": "Bob"
  }
}</code></pre>
<p>and now one can do: <code>me.holdsAccount.label</code> and get back a string, in any language.</p>
<p><strong>What have we lost?</strong><br />
Well nothing in the grand scheme of things because we're still publishing the RDF in other formats via conneg, however in this specific serialization of the data: we've lost the properties, the .language and the .type, although basic types are still there, dates are detectable, numbers are supported, booleans are supported, everything else is just a PlainLiteral, a string.</p>
<p><strong>What's still there?</strong><br />
The data, <code>http</code> names for things, follow your nose, rdf types ++usable-accessible-data in a web standard format. It's 3.5 if not 4.5 star data!</p>
<p><strong>Other considerations</strong><br />
Probably be wise to allow direct access to a .json URI too, so people can simple-GET the data (in addition to exposing via conneg).</p>
<p>Should be an easy hit, any good reasons why not?</p>
<h3>The other RDF Serializations</h3>
<p>While we're here, there are a few other things that need tidied up, properly.</p>
<p><strong>Turtle</strong><br />
Let's make it <i>the standard</i> RDF serialization, with a proper registered media types of application/turtle and text/turtle, fix any bugs in the spec (if any), and possibly allow an optional comma in those lists (1,2,3).</p>
<p>Let's just accept that RDFa is great, but sometimes you just want to embed a chunk of RDF in an HTML document, you know we all want to on occasion, people are shouting for it, it's easy to do, to deploy, doesn't break anything, and it's a really easy hit - so, in the Turtle standard spec pop a note that shows how to include it in an HTML document.</p>
<pre><code>&lt;script type="text/turtle">
  // turtle in here, as-is, no special encoding
&lt;/script></code></pre>
<p><strong>RDF/XML</strong><br />
Leave it as is, let it run it's course naturally, and in many respects just forget it moving forwards, everybody supports it already, that won't change, but there's approximately zero need to keep pushing it.</p>
<p><strong>RDFa</strong><br />
As awesome as it is, just see it for what it is, RDF in attributes, it's like the missing markup features of HTML, for annotating documents and describing the things described in the documents with annotations. It's not a simple data or RDF format, and it's not <i>really</i> suited to just dropping chunks of machine readable RDF in to an HTML document, Turtle in HTML will do that far better.</p>
<p><strong>RDF/JSON and JSON-LD</strong><br />
Standardize a JSON serialization as a replacement / alternative to XML - but, admit and stipulate before hand that it's not usable as-is, or really writable and is arguably human readable. It simply needs to be a fast, unambiguous, optimized for the machine, RDF serialization - no bells and whistles for humans, no "12^^xsd:type" in a string - just something that you can JSON.parse and run circa 10-20 standardized lines of code over to get back an RDFGraph of RDFTriples.</p>
<p>Fin &#038; end.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/linked-data/opening-linked-data/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>My Response to &#039;The Future of RDF Standards&#039;</title>
		<link>http://webr3.org/blog/semantic-web/my-response-to-the-future-of-rdf-standards/</link>
		<comments>http://webr3.org/blog/semantic-web/my-response-to-the-future-of-rdf-standards/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 23:20:17 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[semantic web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Blank node]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[J Hendler's RDFS3]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jim Hendler]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[RDF query language]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[RDF Trust]]></category>
		<category><![CDATA[RDF/XML]]></category>
		<category><![CDATA[Reification]]></category>
		<category><![CDATA[Sandro Hawke]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Syndication Systems]]></category>
		<category><![CDATA[Turtle]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=386</guid>
		<description><![CDATA[Thought I may as well post my response to the future of rdf survey that's going on - all of this can be summed up in the comments at the bottom though, that's what I really think should happen.
What do you like about RDF?
The triple, (dereferencable) URIs as identifiers, use of ontologies/schemas, ^^typed literals, various [...]]]></description>
			<content:encoded><![CDATA[<p>Thought I may as well post my response to the future of rdf survey that's going on - all of this can be summed up in the comments at the bottom though, that's what I really think should happen.</p>
<p><strong>What do you like about RDF?</strong><br />
The triple, (dereferencable) URIs as identifiers, use of ontologies/schemas, ^^typed literals, various different serializations.</p>
<p><strong>What do you dislike about RDF?</strong><br />
documentation is pretty much serialization specific (RDF/XML) should be serialization independent<br />
reification, bags and sequences in the rdf/xml specification<br />
subject and object definitions do not match (lack of literal subjects, lack of collections in the subject position, lack of graph literals)</p>
<p><strong>Most Important Addition to RDF</strong><br />
subject and object both taking the same values (literal subjects), graph literals, collections in the subject position, and variables allowed even if not supported by specific or existing serializations.</p>
<p>Tidy up RDFS and add in much needed values which currently reside in owl and a few other ontologies - RDF should come with a base vocab that covers most rdf specific needs.</p>
<p><strong> Priorities</strong><br />
* Make RDF smaller/simpler: [ No opinion ]<br />
* Make RDF larger/more powerful: [ No opinion ]<br />
* Redesign some parts of the RDF/XML syntax : [ No opinion ]<br />
* <strong>Redesign some parts of the RDF model</strong>: [ 5 +++++ (highest) ]<br />
* Improve RDF's suitability for data/database work: [ 1 + (lowest) ]<br />
* Improve RDF's suitability for semantic/KR work: [ 1 + (lowest) ]<br />
* <strong>Provide better syntaxes for RDF</strong>: [ 5 +++++ (highest) ]<br />
* <strong>Provide better documentatio</strong>n: [ 5 +++++ (highest) ]<br />
* Explain the business case better: [ No opinion ]<br />
* Provide better communication, community support: [ No opinion ]<br />
* <strong>Help people find or develop RDF vocabularies</strong>: [ 4 ++++ ]<br />
* Develop more compelling applications: [ No opinion ]<br />
* <strong>Develop standard vocabularies</strong>: [ 5 +++++ (highest) ]<br />
* Work on RDF Security: [ No opinion ]<br />
* Work on RDF Trust &amp; Provenance: [ 3 +++ ]<br />
* Work on Synchronization, Distribution, and Versioning of RDF Data: [ 3+++ ]<br />
* Work on bridging between RDF and XML: [ 1 + (lowest) ]<br />
* <strong>Standardize RDF API in Javascript</strong>: [ 5 +++++ (highest) ]<br />
* Standardize RDF APIs in other languages: [ No opinion ]</p>
<p>re: Improve RDF's suitability for X, if you improve the model this should happen automatically.</p>
<p>re: Make RDF smaller/simpler/larger/more powerful, again this is conflating issues, RDF should be looser so that serializations can tighten up by supporting certain features.</p>
<p>re: trust, provenance, synchronisation, distribution, versioning - imho this is all out of scope, work could begin on this if the model was loosened up to be more n3-like (graph literals); get the model right and these headaches become much easier to handle.</p>
<p>re: backwards compatibility, this should be a non issue as any looser definition of RDF can be countered by defining existing serializations as including a subset of RDF's features - to limit the next decade based on the mistakes or lessons learned from the last decade is, imho, unethical.</p>
<p><strong>Add Core Support for Working With Multiple Graphs</strong><br />
graph literals, anything else is a work-around imho. if graph literals +5 in every respect, else, meh.</p>
<p><strong>Create a Standard JSON RDF Synta</strong>x<br />
critical imho, unsure if it should come under this working group though.. but if it's the only place and time then here it must be, as RDF/JSON is the most important serialization for the next decade of the web, easily.</p>
<p><strong>Make Turtle a W3C Standard</strong><br />
great yes, but only after getting the core model sorted out, tweaking turtle to handle the changes (should be v easy given n3 heritage) then standardize under separate cover if possible - else, if not possible under separate cover, then imho must happen - the "why not" train of thinking comes to mind. Turtle *should* already be a standard.</p>
<p><strong>Indicate Which RDF Features Are No Longer Best Practice</strong><br />
either deprecate them or leave them be, "weak deprecation" is nothing more than politics; keeping them for BC and allowing a new generation to use them a poor choice imho, deprecate them, mark them as deprecated, then if implementation want to be backwards compatible they still can (and probably are).</p>
<p><strong>Extend RDF/XML</strong><br />
would much rather see RDF defined without any changes to serializations, let serializations conform and revise under separate cover.</p>
<p><strong>Revise Semantics for Blank Nodes</strong><br />
this issue is imo nothing to do with RDF (indicates a problem in sparql).</p>
<p><strong>Create Standards for Deployment of Linked Data</strong><br />
great idea but nothing to do with RDF core imho and would add way to much scope. can't rate it as a +5 because I view it as orthogonal.</p>
<p><strong>Define Some Useful Similarity/Equivalence Properties</strong><br />
100% behind this one, as per J Hendler's RDFS3 proposal - nigh on critical to the wider community moving forwards.</p>
<p><strong>Define a Namespace Packaging Mechanism</strong><br />
personally view it as a bell and whistle proposal, v low priority imho - however loosening the rdf spec to all namespaces to be either included or pointed to in order to allow future work like this would be a good idea.</p>
<p><strong>Change RDF Semantics to Plain Data (SPARQL) Style</strong><br />
I'd just remove this from consideration if possible.</p>
<p><strong>Explain How to Determine What a URI Means</strong><br />
? give something a uri, describe it with RDF, consult that RDF to read it's description, meaning is different in every context and.. unsure why this is on the list tbh.</p>
<p><strong>Allow Literals as Subjects</strong><br />
+5, must happen imho.</p>
<p><strong>Improve Integration with Syndication Systems (Atom)</strong><br />
it should be easy enough, indeed it's already possible - but syndication should and could be done with RDF, lack of graph literals pretty much makes RDF a no-go area in the message space, which is sad..</p>
<p><strong>Other Comments?</strong><br />
IMHO, TimBL (<a href="http://www.w3.org/DesignIssues/RDF-Future.html">http://www.w3.org/DesignIssues/RDF-Future.html</a>) and Jim Hendler (<a href="http://www.w3.org/2009/12/rdf-ws/papers/ws31">http://www.w3.org/2009/12/rdf-ws/papers/ws31</a>) have everything covered in their proposals, I completely fail to understand why these two proposals aren't just done as they cover everything and are imho golden.</p>
<p>If I could click my fingers and decide what happened, I'd get everybody working on making the changes outlined by TimBL and Jim Hendler, then get a group on to doing RDF/JSON under supervision of Sandro Hawke, Manu Sporny and possibly Jeni T. Get Turtle aligned with the changes (should be an easy hit) then clean up RDF/XML and define it as supporting a subset of RDF. Quite sure this won't happen though and I'll be completely confused as to why not.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/semantic-web/my-response-to-the-future-of-rdf-standards/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Design Issue Updates</title>
		<link>http://webr3.org/blog/linked-data/design-issue-updates/</link>
		<comments>http://webr3.org/blog/linked-data/design-issue-updates/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 15:58:44 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[social web]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=369</guid>
		<description><![CDATA[Just a quick note to let you all know that some of the crucial design issues related to social web, cloud storage, linked data, read write web of data and related have been updated by Tim Berners-Lee.
The specific issues are:

Read-Write Linked Data
Socially Aware Cloud Storage
Levels of Abstraction: Net, Web, Graph

I'm yet to disseminate all that's [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note to let you all know that some of the crucial design issues related to social web, cloud storage, linked data, read write web of data and related have been updated by Tim Berners-Lee.</p>
<p>The specific issues are:</p>
<ul>
<li><a href="http://www.w3.org/DesignIssues/ReadWriteLinkedData.html">Read-Write Linked Data</a></li>
<li><a href="http://www.w3.org/DesignIssues/CloudStorage.html">Socially Aware Cloud Storage</a></li>
<li><a href="http://www.w3.org/DesignIssues/Abstractions.html">Levels of Abstraction: Net, Web, Graph</a></li>
</ul>
<p>I'm yet to disseminate all that's changed, but they certainly are filled out and refined, remember folks the devils in the details!</p>
<p>Quite sure that I'll follow up with a bunch of notes, as will a few others - but for now, there's the heads up that it's time to do a bit of reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/linked-data/design-issue-updates/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Web of Data illustrated, meet Bob.</title>
		<link>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/</link>
		<comments>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/#comments</comments>
		<pubDate>Sat, 08 May 2010 14:43:22 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Cross-platform software]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[IBM software]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Negation]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Subdomain]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=325</guid>
		<description><![CDATA[
Something to try
Next time you start an application, why not create a subdomain for your data tier, create a script for each SQL query and call it via HTTP (honestly you won't notice a speed difference), similarly expose all static files your system uses on the same (or a different) sub domain. Here's the advantages:

You [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-328" title="bob" src="http://webr3.org/blog/wp-content/uploads/2010/05/bob1.jpg" alt="bob" width="738" height="2230" /></p>
<h2>Something to try</h2>
<p>Next time you start an application, why not create a subdomain for your data tier, create a script for each SQL query and call it via HTTP (honestly you won't notice a speed difference), similarly expose all static files your system uses on the same (or a different) sub domain. Here's the advantages:</p>
<ol>
<li>You can scale without changing your application</li>
<li>You can swap servers without changing your application</li>
<li>You can move data around your server and take advantage of all the HTTP servers features.</li>
<li>You can cache your resources and utilize HTTP caching.</li>
<li>You can distribute or relocation your application anywhere on the net without worrying about data.</li>
<li>You can migrate over to different data systems (swap database vendors etc) without changing your application.</li>
<li>You can call every resource on the web in the same manner, from APIs through to linked data and all in between.</li>
<li>You're critical SQL and data mapping code will be fully abstracted and in self contained files (ultra easy to edit, bug fix, maintain).</li>
<li>You can take advantage of HTTP logging, and HTTP status codes instead of custom exceptions.</li>
<li>You have a ready made RESTful API in to your data tier, so you can hook on other applications, or open it up to third parties, or the entire net.</li>
</ol>
<p>So much more, all by one simple step - and that's only the first half of the cartoon ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>Generations of the Web - an Overview.</title>
		<link>http://webr3.org/blog/general/generations-of-the-web-an-overview/</link>
		<comments>http://webr3.org/blog/general/generations-of-the-web-an-overview/#comments</comments>
		<pubDate>Fri, 07 May 2010 06:23:39 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[Entity-attribute-value model]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[legacy systems]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[proprietry systems]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Roy T. Fielding]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[server side web applications]]></category>
		<category><![CDATA[server side web applications coul]]></category>
		<category><![CDATA[social services]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[Versa]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Access Control]]></category>
		<category><![CDATA[Web application]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=317</guid>
		<description><![CDATA[I feel it's very important to note where we are coming from, and where we are headed with regards the web.
Generations One and Two
Historically we have been through two generations of the web so far, not web 1 and web 2.0, but rather the first round of mounting the presentation tier on the web (static [...]]]></description>
			<content:encoded><![CDATA[<p>I feel it's very important to note where we are coming from, and where we are headed with regards the web.</p>
<h2>Generations One and Two</h2>
<p>Historically we have been through two generations of the web so far, not web 1 and web 2.0, but rather the first round of mounting the presentation tier on the web (static publishing documents and media), then the second round of mounting the application tier on the web (from forms through to the current api's we see everywhere).</p>
<p>The next round, and what many are currently hacking at, is mounting the data tier on the web, mainly via the "<a href="http://en.wikipedia.org/wiki/Linked_Data">Linked Data</a>" movement which you may have noted.</p>
<p>This third round is critical for two primary reasons:</p>
<ol>
<li>By mounting the data tier on the web, it allows us to remount the application tier again, but this time properly, where <a href="http://tools.ietf.org/wg/httpbis/">HTTP</a> is the API between the Application tier and the Data tier. (true <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">REST</a>)</li>
<li> The "<a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a>" is very much dependant on the "Things" speaking the same language and sharing a single <a href="http://en.wikipedia.org/wiki/Data_model">Data Model</a>, where the model remains the same but the vocabulary can change.</li>
</ol>
<h2>Generation Three</h2>
<p>"Linked Data" is in many ways the solution to the above, because it has a Universal Data Model (<a href="http://en.wikipedia.org/wiki/Entity-attribute-value_model">EAV</a>), a Universal API (HTTP), and Universal Addressing &amp; Identification (the <a href="http://en.wikipedia.org/wiki/Dereferenceable_Uniform_Resource_Identifier">duality</a> of http URIs) - more importantly though, "Linked Data" provides the means to mount and expose both <a href="http://en.wikipedia.org/wiki/Abox">ABox</a> and <a href="http://en.wikipedia.org/wiki/TBox">TBox</a> statements on the web - this is the key detail where <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> wins over other EAV based data models; the ability to store both the data and the vocabularies on the web, and both in the same manner.</p>
<p>Linked Data is currently tied (but not bound) to RDF. However, RDF still has very critical limitations, primarily it doesn't have any notion of Named Graphs or Quads. <a href="http://www2005.org/cdrom/docs/p613.pdf">Trust and provenance</a> are essential moving forwards (with quads you can <a href="http://www.semanticoverflow.com/questions/757/which-owl-reasoners-understand-named-graphs">select which data your application trusts</a>, and which it doesn't, based on the source, the Named Graph - without it you can't), as is the ability to transfer data from multiple sources at the same time (update streams, batch operations, merged data with provenance - again needing quads).</p>
<p>The above means we need an <a href="http://www.w3.org/2009/12/rdf-ws/">RDF2</a> (or standardisation &amp; adoption of <a href="http://www.w3.org/2000/10/swap/doc/cwm">N3+rules</a>), and moreover we need standardized non-xml serializations of said RDF(+2), the most important being <a href="http://n2.talis.com/wiki/RDF_JSON_Specification">rdf/json</a>.</p>
<p>This brings me to <a href="http://www.w3.org/TR/html5/">HTML5</a>, the key here isn't the new HTML5 document format, the semantics, the ability to embed microdata or anything like that - it's the introduced (or implied) dependency on JS /ECMAScript via the <a href="http://apirocks.com/html5/html5.html">JS APIs</a>. This leads to JS being rolled out on to the majority of devices - it's also important to note the server side JS movement in this too.</p>
<h2>Generation Four</h2>
<p>We've had a "Web of Documents", we're building a "Web of Data", the next logical step is to have a "Web of Applications", for this we need two things: a Universal Programming Language (JS...) and an "Internet of Things" which support the universal data model and the universal programming language.</p>
<p>As far as I'm concerned HTML5 plays a critical part in the big picture:</p>
<p>- Short term, it at least unites the browser vendors to better support the techs which developers use.<br />
- Presently (and from here on) it allows us to start hacking at the web of applications.<br />
- In the future it's legacy will be it's introduction of JS as a Universal Programming Language.</p>
<p><strong>Sides:</strong><br />
It stands to reasons that RDF/JSON (or whatever supersedes RDF serialized in JSON) will also play a major part in this round.</p>
<p>We may well see a shift from client-server, server-server to application-application; where each machine on both sides comprises of HTTP Client, Server and Cache.</p>
<h2>Generation Five</h2>
<p>Leading on from here we get to the fifth round of the web, remounting the Presentation Tier, but this time where the presentation tier speaks to the application tier through HTTP, the Universal Interface.</p>
<p>HTML (together with JS and CSS) again plays a critical role in round five, because up until this point it remains the only way for the hackers to create this fifth generation, notably it will be a lot more than we are have now, after years of maturity, hacking and support universally. Naturally then we can assert that HTML will remain the core of the Web's presentation tier so long as the Web exists.</p>
<h2>Additional Shifts</h2>
<p>Widespread adoption and understanding of REST, truly without this we'll never get past generation three.</p>
<p>Data transformation, for a very long time <a href="http://virtuoso.openlinksw.com/">data transformation</a> will be an everyday service we all require, for legacy systems, legacy data, proprietry systems, data model conversion and so on - the key isn't to be able to understand all kinds of data / serializations / models, but to transform it in to what you do understand, easily.</p>
<p>The enabling of the <a href="http://en.wikipedia.org/wiki/Semantic_Web">Semantic Web</a>, Linked Data provides the means to do this, it is the enabler - each EAV triple we put out is also a triple that can be reasoned over, full machine understanding of all our data is an ultimate goal that will take many years. Generation three very much pushes the semantic web in to the realms of the real world, no longer for the strictly academic.</p>
<p>The great cleanse, all the data from generations one through three (and possibly beyond) will need cleansed - as primary universal vocabularies emerge the task will be to clean what's on the web and migrate it in to the new models, reasoning and cleaning it as we go.</p>
<p>Cross compilation and seperation of syntax from machine code - another movement that is gaining momentum, no longer are we tied to a specific syntax for a specific JVM - not far off is the day where we can program in our preffered language, and compile it to whatever target we need. This is all ready happening in many quarters (like <a href="http://haxe.org/">haxe</a>) and soon will be the norm.</p>
<p>Seperation of human readable data syntax and data storage/transfer serialization. This has long been understood, however with <a href="http://www.w3.org/XML/EXI/">EXI</a> comes a light serialization of XML for the machine &amp; transfer; logically from there we can expect the same in the future for RDF(2) and most data moving forwards.</p>
<p>Much of the code needed for the Application Tier will disappear over time, typically most application code involves taking some data and turning it in to some new data, processing it - when you can do this on the fly via data transformations, rules, reasoning, inference, querying and similar, you remove the need for most f the code in between. It is entirely possible that most server side web applications could disappear.</p>
<h2>End</h2>
<p>It is testament to the strength and design of the web that it can support every incarnation of the web thus far and in the future all at the same time - All credit to Tim Berners-Lee, Roy T Fielding and the many, many others who contributed, evolved and continue to forge this thing we call the web.</p>
<p><strong>Disclaimer</strong><br />
Obviously, this is all just my humble opinion, none of it is fact - but from stepping back a bit this is what I conclude, for now.</p>
<p>I've skipped loads of things, most of the techs I work on and think about daily, FOAF+SSL, web access control, read write web of structured linked data, loads more - the above is just a summary of where I think we're headed, primarily for my own reference :)</p>
<p>Universal doesn't necessarily mean universal - but it's a good enough word to convey what I'm thinking. Any other use of terminology you don't quite agree with, likewise, terminology is not the point of the post ;)</p>
<p>Best &amp; happy to hear your thoughts and additions,</p>
<p>Nathan</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/generations-of-the-web-an-overview/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Restarting Linked Data from scratch, part 1</title>
		<link>http://webr3.org/blog/linked-data/restarting-linked-data-from-scratch-part-1/</link>
		<comments>http://webr3.org/blog/linked-data/restarting-linked-data-from-scratch-part-1/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 07:41:51 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[average web page]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[client / server]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Control Data Systems Inc]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[important web caching]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Query languages]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[real web]]></category>
		<category><![CDATA[Representational State Transfer]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[RESTful protocol]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[SPARUL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[traffic site]]></category>
		<category><![CDATA[web application super fast]]></category>
		<category><![CDATA[web applications using desktop clients]]></category>
		<category><![CDATA[Web browser]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[web servers]]></category>
		<category><![CDATA[Web services]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=269</guid>
		<description><![CDATA[I'm going out on a limb and starting my whole journey through Linked Data and "Web 3.0" again - in order to address the challenges many in the community are facing, and which are "blocking" me. I'm going to take everything I've learned so far and go right back to grass roots with linked data.
I'm [...]]]></description>
			<content:encoded><![CDATA[<p>I'm going out on a limb and starting my whole journey through Linked Data and "Web 3.0" again - in order to address the challenges many in the community are facing, and which are "blocking" me. I'm going to take everything I've learned so far and go right back to grass roots with linked data.</p>
<p>I'm primarily documenting this journey for my own benefit, for reference and to unload it from my brain; but hopefully it'll be of use to the wider community and any feedback will be massively appreciated.</p>
<p>Here goes, I'll start by analysing the web thus far:</p>
<h2>The Web till now</h2>
<p>The power and the success of the web so far, <em>in my opinion</em>, has come from four main things:</p>
<ul>
<li>The URI</li>
<li>Hyperlink</li>
<li>The Resource</li>
<li>HTTP and it's RESTful design.</li>
</ul>
<p>More importantly it's the combination of the four working together that makes the web so great, because, they let you cut out everything else and go straight to the resource you want. This is a point that we need to concentrate on for a minute.</p>
<h3>Going straight to the resource</h3>
<p>Back at the start of the web, this allowed people to (for the first time) jump from a resource in the bowels of one companies hierarchy straight to another resource in a different companies hierarchy - very much like reading a book, looking at the references and suddenly having the book or paper it references right there in your lap - amazing to say the least.</p>
<p>Skip forwards a few years and we have the search engines, suddenly simply by typing a few keywords you can jump right to a resource (page/image/...) anywhere on the web. Fast forward some more and we get to web 2.0 where again people are amazed every time direct access to a resource is exposed. Yup.. all your web 2.0 is just this simple principal..</p>
<p>An RSS feed, well it lets you read a resource (a post) outside the context of the website and inside lets say google reader. You can rip a resource (video) out of youtube and embed it anywhere you like. You can interact with a web application super fast thanks to targeting a resource directly with say ajax and only updating that resource rather than updating the entire view (page). You can interact with web applications using desktop clients because they let you access one resource at a time; and so on and so forth, virtually every improvement you see on the web comes down to that one thing, directly accessing a resource (<em>and creating resources at a more granular level</em>).</p>
<h3>How we made the web <em>faster</em></h3>
<p>Negating the rather obvious upgrades in technology over the years, there is one primary thing that speeds up the web and virtually everything computer oriented, the cache.</p>
<p>Before all the web 2.0 stuff, resource caching was at an all time high and was making the web faster for all of us; caching at the resource level is enabled by HTTP and its RESTful design. Control Data allows us to limit how much information needs transferred over the web, request an image once and it gets transferred, request it a second time and thanks to caching and HTTP odds are very high that it won't get transferred again. When you consider that the average web page can easily have 30, 50, 300 images and static files embedded in it this is a huge speed increase, and frankly one we could not live without.</p>
<p>Skipping forwards to web 2.0 and the present day again, we've gone wild with caching; anybody who's been involved with a high traffic site will tell you that the only way to do it is to cache everything you can; from data in memory, through to code and op code caches. But this is only half the story.. a strange this has happened..</p>
<h3>How we made the web <em>slower</em></h3>
<p>Simply, we forgot HTTP and a RESTful web somehow - that all important web caching whether it be at intermediate servers or in a web browser, it's forgotten.</p>
<p>To illustrate, if you view an image and then view it again, it'll be there instantly - why? because last-modified, etag and other control data is sent by great web servers like apache for static files, until you force a refresh or the file changes on the server you'll simply get a 304 response telling whatever cache down the line to use it's own copy instead. Now, try jumping on to a web page, even this one and you'll find the whole thing is reloaded, every time. I'd estimate that circa 80% of all pages you visit are fully reloaded every single time you see them, if not more.</p>
<p>Here's the reason - most pages are generated by scripts now, and something that goes unnoticed by most developers is that the web server (like apache) hand over *full* control to the language runtimes, and in turn to the developer. In other words, unless developers are calculating, receiving and sending control data for each response, and validating every http message in to their scripts, then most of the benefits of HTTP and RESTful design are completely lost; <em>especially caching</em>.</p>
<p>Here's a fact, whether you agree with it or not, to me it is a fact: <em>the web has to be RESTful for it to work properly</em>, whether it's a web of documents, or a web of data, or both.</p>
<h2>Looking at the current state of Linked Data</h2>
<p>Linked Data is amazing because it takes the big four I mentioned earlier (URI, Hyperlink, Resource, HTTP) to a new level; we create resources at the most granular level possible, assign them URIs, link them together with <em>typed</em> hyperlinks then expose them via HTTP.</p>
<p>Notice I didn't mention REST in there? that's because I (and I'm not the only one) don't feel that Linked Data is currently RESTful. And as we can learn from web 2.0, unless this is addressed we'll face major problems down the line. In addition, because of this lack of RESTful-ness I feel like the data isn't linked; simply using URIs from different datasets on both sides of a triple does not link those datasets, well not from a client perspective anyway.</p>
<p>To expand and refining the issues:</p>
<h3>SPARQL Silos</h3>
<p>Issue one, is that SPARQL and the servers with RDF stores which power it are positioned at the wrong side of the client / server relationship imho. Because each major dataset effectively has it's own server and access point (<em>SPARQL interface</em>) it means that when you query it, it can only return the Linked Data which it stores. This leaves us three options at the minute:</p>
<ul>
<li>let that server pull in remote Linked Data and store it too (which makes the server fill up and slow down, and turns it in to a silo).</li>
<li>use one great big server that tries to store <em>all</em> the linked data (which feels like a silo all over again to me, not distributed at all).</li>
<li>Run our own server and only store limited data in it (limited.. and again a silo I guess)</li>
</ul>
<p>If we moved SPARQL to the client side however, then all it would need is a starting point from which it could traverse the web of data, only pulling in what it needed for a query. This may sound slow but if all data was exposed as resources like it should be, and with control data so it could be cached, this slow down would soon disappear; lesson from web 1 and 2!</p>
<p>With regards the caching, this could happen at traditional intermediate caches within the internet and at ISPs, locally in client side triples stores (like a browsers cache) or the existing big servers that attempt to store all the linked data could be repositioned as linked data caches.</p>
<p>For example a small RDF document could simply delegate seeAlso http://datacac.he/http://subject.uri and that linked data cache could return back all the information it knows about the subject by returning the RDF results of a SPARQL describe. This alone would be a HUGE speed up, prevent silos and create a real web of data.</p>
<p>In addition, this would keep all linked data transferred through the web in RDF format, and thus machine readable and typed. At the minute we have lots and lots of SPARQL queries, which essentially are just untyped junk data that a machine couldn't possibly understand - SPARQL results remove all the goodness from RDF and give us something that is domain and developer specific, not re-usable. Think about that for a moment..</p>
<p>Clarification: I'm not saying SPARQL + RDF stores shouldn't be on the server side, they should as they are needed in most cases, I'm simply saying that the primary interface to linked data shouldn't be SPARQL over HTTP to a remote SPARQL endpoint. Rather we should be accessing RDF documents, or entities if you like via HTTP.</p>
<h3>RESTful RDF</h3>
<p>Issue two, the focus has been on getting data on the web, finding ways to link it, access it, store and query these vast datasets; and the work done thus far is amazing! But now that's handled it's time to go back to basics and find ways of both getting and publishing Linked Data RESTfully, at a granular per resource level.</p>
<p>This means handling RDF like ATOM, and essentially making atompub all over for RDF (as many are thinking and working on). I feel that regardless of what's implemented behind the interface, and whether triples stores and SPARUL are used, we still need to manage RDF / Linked Data in terms of documents and entities for it to be RESTful.</p>
<p>An additional issue raised by this is loosing the notion of a quad, g s p o, Named Graphs are vastly important to linked data, but we need to get named graphs in to triples and out of quads so we are always working with RDF through HTTP.</p>
<p>Also worth noting that temporal, provenance, multi-language, multiple representations etc will all need handled too; without using any HTTP extensions; no point half baking it or making the solution dependant on drafts - needs to work with the Universal Interface!</p>
<h2>First Step</h2>
<p>The above means one of the first challenges and things I'll try to tackle, is to find a way to fit a RESTful RDF publishing and exposing protocol in to the shared http space on a web server; taking in to account things like content negotiation, multiple representations, versions / time varying representations, and backwards compatibility with the current web.</p>
<p>note: I'm not going to define the protocols, plenty of more intelligent people than me are working on these things, just leverage a space where a full RESTful protocol can work in unison with the way we currently do things so that it's transparent to browsers and visible to linked data clients. This should then allow a stable test environment to try out different ways of doing things and test that the current web doesn't break.</p>
<p>To be continued.. often and frequently. <em>I'm blocked on my current, v important project, and need to address these things</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/linked-data/restarting-linked-data-from-scratch-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading List : Web, Linked Data, REST, Semantic Web</title>
		<link>http://webr3.org/blog/internet/reading-list-web-linked-data-rest-semantic-web/</link>
		<comments>http://webr3.org/blog/internet/reading-list-web-linked-data-rest-semantic-web/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 02:03:17 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[1.1 Uniform HTTP Protocol]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Atom Publishing Protocol]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Knowledge representation]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[Paging]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Query languages]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Reification]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[Roy T. Fielding]]></category>
		<category><![CDATA[Roy T. Fielding Dissertation]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[Simple Knowledge Organization System]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[URIs Resources]]></category>
		<category><![CDATA[Web Access Control]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[Web Resources     Named Graphs]]></category>
		<category><![CDATA[Web services]]></category>
		<category><![CDATA[Web Tutorial   Mindswap]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[write-enabled Web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=264</guid>
		<description><![CDATA[Personally, I have two types of reading, the posts etc that I "tweet" and then the heavier reading I do over time; this is a list of the latter for the past month - hopefully it'll help somebody who's looking for the same kind of info I have been.
I've grouped all the links in to [...]]]></description>
			<content:encoded><![CDATA[<p>Personally, I have two types of reading, the posts etc that I "tweet" and then the heavier reading I do over time; this is a list of the latter for the past month - hopefully it'll help somebody who's looking for the same kind of info I have been.</p>
<p>I've grouped all the links in to two main sections, and then sub-grouped by how they make sense in my head! :)</p>
<h3>Web, HTTP and REST</h3>
<p>Roy T. Fielding Dissertation - <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" target="_blank">Architectural Styles and the Design of Network-based Software Architectures</a> Of particular relevance and note are chapters 4-6 (many only ever read chapter 5 and miss the context + summary *needed* in chapters 4 and 6!)</p>
<ul>
<li><a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/web_arch_domain.htm" target="_blank"> Chapter 4 - Designing the Web Architecture: Problems and Insights</a></li>
<li><a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank"> Chapter 5 - Representational State Transfer (REST)</a></li>
<li><a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm" target="_blank"> Chapter 6 - Experience and Evaluation</a></li>
</ul>
<p><a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven" target="_blank"> Roy T. Fielding - REST APIs must be hypertext-driven</a><br />
<a href="http://www.mail-archive.com/whatwg@lists.whatwg.org/msg12443.html" target="_blank"> Discussion on HTML5 and RESTful HTTP in browsers</a><br />
<a href="http://tech.groups.yahoo.com/group/rest-discuss/message/5168" target="_blank"> Discussion on URIs Resources and Switching content types w/ REST angle (v good)</a></p>
<p><a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" target="_blank">RFC 2616 HTTP/1.1</a> and the HTTPbis Working Group HTTP/1.1 update in parts:</p>
<ol>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging" target="_blank">Messaging</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics" target="_blank">Semantics</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p3-payload" target="_blank">Payload</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional" target="_blank">Conditional</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p5-range" target="_blank">Range</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache" target="_blank">Cache</a></li>
<li><a href="http://tools.ietf.org/html/draft-ietf-httpbis-p7-auth" target="_blank">Authentication</a></li>
</ol>
<h3>Linked Data and the Semantic Web</h3>
<p><a href="http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData" target="_blank"> Linking Open Data Community Project</a><br />
<a href="http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData/Applications" target="_blank"> Linked Data Applications</a><br />
<a href="http://esw.w3.org/topic/TaskForces/CommunityProjects/LinkingOpenData/EquivalenceMining" target="_blank"> Equivalence Mining and Matching Frameworks</a><br />
<a href="http://esw.w3.org/topic/TaskForces/CommunityProjects/LinkingOpenData/SemWebClients" target="_blank"> Linked Data Browsers, Mashups and other Client Applications</a></p>
<p><a href="http://esw.w3.org/topic/DatasetDynamics" target="_blank"> Dataset Dynamics - On the Dynamics of Linked Datasets</a><br />
<a href="http://esw.w3.org/topic/WriteWebOfData" target="_blank"> Realizing a write-enabled Web of Data</a><br />
<a href="http://esw.w3.org/topic/WebAccessControl" target="_blank"> Web Access Control (WAC)</a>  - a decentralized system for allowing different users and groups various forms of access to resources where users and groups are identified by HTTP URIs.<br />
<a href="http://esw.w3.org/topic/WebAccessControl/Vocabulary" target="_blank"> Discussion of the WAC vocabulary</a><br />
<a href="http://www.w3.org/DesignIssues/CloudStorage.html" target="_blank"> Socially Aware Cloud Storage Design Note</a><br />
<a href="http://www.w3.org/2010/Talks/0303-socialcloud-tbl/" target="_blank"> Distributed Social Networking through Socially Aware Cloud Storage from TimBL</a><br />
<a href="http://esw.w3.org/topic/AwwswHome" target="_blank"> AWWSW - "Architecture of the World Wide Semantic Web" Task Force</a></p>
<p><a href="http://www.w3.org/TR/sparql11-http-rdf-update/" target="_blank"> SPARQL 1.1 Uniform HTTP Protocol for Managing RDF Graphs</a><br />
<a href="http://www4.wiwiss.fu-berlin.de/pubby/" target="_blank"> A Linked Data Frontend for SPARQL Endpoints</a><br />
<a href="http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/index.html" target="_blank"> RAP - RDF API for PHP V0.9.6</a><br />
<a href="http://buzzword.org.uk/2009/posted-data/" target="_blank"> Inav the Terrible - An idea for posting RDF through HTTP.</a></p>
<p><a href="http://n2.talis.com/wiki/Changesets" target="_blank"> Talis Changesets</a><br />
<a href="http://triplify.org/vocabulary/update" target="_blank"> Triplify Update Vocabulary</a></p>
<p><a href="http://inkdroid.org/journal/2009/11/04/skos-as-atom/" target="_blank"> skos as atom</a></p>
<p><a href="http://tools.ietf.org/html/rfc4287" target="_blank"> RFC 4287 - The Atom Syndication Format</a><br />
<a href="http://tools.ietf.org/html/rfc5023" target="_blank"> RFC 5023 - The Atom Publishing Protocol</a><br />
<a href="http://ietfreport.isoc.org/all-ids/draft-snell-atompub-tombstones-06.txt" target="_blank"> AtomPub Tombstones - The Atom "deleted-entry" Element</a><br />
<a href="http://tools.ietf.org/html/rfc5005" target="_blank"> RFC 5005 - Feed Paging and Archiving</a><br />
<a href="http://tools.ietf.org/html/draft-brown-versioning-link-relations-07" target="_blank"> Versioning Link Relations - Link Relation Types for Simple Version Navigation between Web Resources</a></p>
<p><a href="http://www2005.org/cdrom/docs/p613.pdf" target="_blank"> Named Graphs, Provenance and Trust</a><br />
<a href="http://sunsite.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-521/paper1.pdf" target="_blank"> Accessing Site-Specific APIs Through Write-Wrappers From The Web of Data</a><br />
<a href="http://events.linkeddata.org/ldow2009/papers/ldow2009_paper18.pdf" target="_blank"> Provenance Information in the Web of Data - LDOW 2009 paper</a><br />
<a href="http://www.w3.org/2002/Talks/0910-rdf-reification/Overview.html" target="_blank"> Using Reification To Extend RDF</a> (historical reification approach)<br />
<a href="http://dig.csail.mit.edu/2009/presbrey/UAP.pdf" target="_blank"> RDF Policy-based URI Access Control for Content Authoring</a><br />
<a href="http://eprints.ecs.soton.ac.uk/18332/1/opm.pdf" target="_blank"> The Open Provenance Model Core Specification (v1.1)</a><br />
<a href="http://www.w3.org/2005/Incubator/prov/wiki/Main_Page" target="_blank"> W3C Provenance Incubator Group</a></p>
<p><a href="http://www.w3.org/History/" target="_blank"> History of the Web 1945, 1980 through 1997 on W3</a><br />
<a href="http://www.w3.org/TR/leiri/" target="_blank"> LEIRI - Legacy extended IRIs for XML resource identification</a> The type of "URI" used in xml:base<br />
<a href="http://www.slideshare.net/LeeFeigenbaum/cshals-2010-w3c-semanic-web-tutorial" target="_blank"> CSHALS 2010 W3C Semanic Web Tutorial</a><br />
<a href="http://www.mindswap.org/2002/rdfconvert/" target="_blank">Mindswap online RDF Converter</a><br />
<a href="http://www.w3.org/RDF/Validator/" target="_blank">W3 online RDF Validator</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/internet/reading-list-web-linked-data-rest-semantic-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Are GET and PUT symmetrical? (Linked Data, CONNEG)</title>
		<link>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/</link>
		<comments>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 01:06:29 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[semantic web]]></category>
		<category><![CDATA[Computer networking]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Hypermedia]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[MIME]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[URI scheme]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=235</guid>
		<description><![CDATA[John S. Erickson, Ph.D. left a rather interesting question on my earlier post HTTP RFC paraphrased for the Web of Data, quoted here in full:

Here's a question: are GET and PUT symmetrical? Perhaps my question is a bit out-of-band, because the context of my question is really about the symmetry of content negotiation. Implicit in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitwacker.wordpress.com/">John S. Erickson, Ph.D.</a> left a rather interesting <a href="http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/comment-page-1/#comment-237">question</a> on my earlier post <a href="http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/">HTTP RFC paraphrased for the Web of Data</a>, quoted here in full:</p>
<blockquote><p>
Here's a question: are GET and PUT <i>symmetrical</i>? Perhaps my question is a bit out-of-band, because the context of my question is really about the symmetry of <a href="http://www.ietf.org/rfc/rfc2295.txt" rel="nofollow">content negotiation</a>. Implicit in <a>RFC 2616 section 14</a> is the existence of a (potentially) wide variety of alternate representations that may be accessed via the HTTP/1.1 request header fields; in the world of <a href="http://linkeddata.org" rel="nofollow">linked data</a> these are useful for differentiating between <code>text/html</code>, <code>application/rdf+xml</code>,  <code>text/rdf+n3</code>, etc.</p>
<p>So maybe the heart of my question is this: in a linked data world where <a href="http://www.ietf.org/rfc/rfc2295.txt" rel="nofollow">conneg</a> is alive and well (and assumed), what should be the correct interpretation of RFC 2616's <i>(if) the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server</i>? If I can GET a resource to the resolution of a MIME type, should I not expect to PUT to that same resolution as well? Or, if during a GET the server responds with a list of <code>Alternates</code>, shouldn't I expect to PUT using any of those choices?</p>
<p>Readers familiar with MIME-typed disseminators in the digital repository world (think: Fedora) might think of this as a question about MIME-typed "ingestors"; it is a similar issue: instead of requesting a particular manifestation of the object, this is about updating a specific manifestation (possibly updating the whole).
</p></blockquote>
<p>It's a very good question, and I'm perhaps a bit out of my rank in answering, but to me it seems easy <em>(perhaps too easy)</em> to answer... here go's:</p>
<p>You can request a GET on anything with an HTTP URI.</p>
<p>HTTP URIs can identify <em>anything</em>, however for the context of this let's limit URIs to identifying three distinct things:</p>
<ol>
<li><strong>Stored Hypermedia</strong> <em>(digital documents, audio, video, text files ... any "file" physically stored on the server and web accessible.)</em></li>
<li><strong>Web Services</strong> <em>(a data-accepting process, a gateway to some other protocol, a separate entity that accepts annotations ... Nota bene if you are still reading then you know what I'm referring to so no need to be pedantic on my choice of terminology)</em></li>
<li><strong>Things</strong> <em>(the sky, dave's car, me ... and in this context <strong>not</strong> hypermedia or web application endpoints)</em></li>
</ol>
<p>Let's look at what we can <em>successfully</em> PUT. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6">RFC 2616 section 9.6</a> tells us:</p>
<blockquote><p> The PUT method requests that the enclosed entity be stored under the supplied Request-URI ... the URI in a PUT request identifies the entity enclosed with the request ...</p></blockquote>
<p>We can derive from the above that only "Stored Hypermedia" can <em>successfully</em> be PUT; and thus we cannot <em>successfully</em> PUT a "Web Service" or a "Thing".</p>
<p><em><strong>Nota bene</strong> I'm assuming here that you (the reader) already knows all about CONNEG, Linked Data and the multiple questions which have arisen on how to handle content negotiation, especially with regards RDF and alternative representations.</em></p>
<p>In the Linked Data world we use the RDF data model extensively. We describe things with statements, each statement is a subject-object-predicate expression which we refer to as a <em>triple</em>; strap enough of these triples together and you have a description of a thing. This is our RDF.</p>
<p>To pass these descriptions around we can serialize our RDF statements in a variety of machine readable formats <code>application/rdf+xml</code> and <code>text/rdf+n3</code> amongst others.</p>
<p>An RDF Document is where we persist one of these serializations in document, <em>id est</em> Stored Hypermedia.</p>
<p>So to store an RDF document we would logically use PUT, and then GET it later, or perhaps DELETE it. We certainly wouldn't POST to an RDF Document, anymore than we would POST to a GIF image! When thinking about an RDF Document think of it as Hypermedia, <em>exempli gratia</em> an AVI, JPEG or WAV, and treat it as such; a single document, in a single format.</p>
<p><strong>RDF is not one of it's serializations, and it most certainly isn't an "RDF Document".</strong></p>
<p>A major factor which compounds confusion in regards to content negotiation is the Web community's fixation of thinking about the response to a GET as if it were Stored Hypermedia, especially when the mime type associated with the returned entity is something like <code>text/html</code> or <code>application/rdf+xml</code>.</p>
<p>In common language what you are reading is a "web page", infering that it is a Document and Stored Hypermedia.</p>
<p>In reality what you are <em>viewing</em> is an entity returned by a GET request to a Web Service, and that entity has a mime type of <code>text/html</code>. What you are reading is actually just some data I input in to a database via a POST to a CMS (<em>wordpress</em>); there are other things here too, presentation data, navigation on the right and so forth. Leave a comment and the data I entered will stay the same but the entity returned when you next GET this URI will be different. This certainly is not Stored Hypermedia (as we defined it above).</p>
<p>Considering the conneg questions, ask yourself "are these <code>Alternatives</code> Stored Hypermedia or simply entities returned by a web service?". I'm willing to take a punt here and say that your answer will be the latter. Which means that you'd be getting the data in to your system via a POST to a web service. and not a PUT.</p>
<p>Further, if you think about the "RDF" you would no doublt be posting to create these alternatives, it may well make sense to think of it as POSTing RDF in a serialized form which the Web Service accepts. The Web Service will then (<em>all going well</em>) persist this RDF, or the triples, in something like a QuadStore. This serialized RDF is not an RDF Document, it's just serialized RDF in a request entity, just like any other data. Thus think of serialized RDF like json, base64 encoded strings, the egg in <code>?name=egg&#038;val=shell</code>; it's "just" data.</p>
<p>All of the above is driven home when you consider HTTP URIs that identify "Things". You can't send the Thing in an entity, thus if you get any response from a server when you HTTP GET the URI for a thing, then that URI <em>must</em> be serviced by a Web Service (as defined above).</p>
<p>And now that you know it's a Web Service logic would dictate that you should POST back to it...</p>
<blockquote><p>The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. POST is designed to allow a uniform method to cover the following functions: - Annotation of existing resources; ... </p></blockquote>
<p><strong>Answering the questions!</strong><br />
After all of that, on to the questions.</p>
<ul>
<li><strong>are GET and PUT symmetrical?</strong><br />
Only in the context where the URI requested identifies Stored Hypermedia.
</li>
<li><strong>If I can GET a resource to the resolution of a MIME type, should I not expect to PUT to that same resolution as well?</strong><br />
No as by this point you know that the URI/MIME combo you requested definately does not represent Stored Hypermedia (<em>a Document</em>).
</li>
<li><strong>Or, if during a GET the server responds with a list of Alternates, shouldn't I expect to PUT using any of those choices?</strong><br />
Not expect, as you have no way of knowing whether each URI returned identifies Stored Hypermedia, a Web Service or another Thing. With every new URI the cycle starts again.
</li>
</ul>
<p><strong>Please don't take any of this as gospel, it's all IMO.</strong> I do at least hope it makes sense though, and if it doesn't please do correct me asap :)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/semantic-web/are-get-and-put-symmetrical-linked-data-conneg/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>HTTP RFC paraphrased for the Web of Data</title>
		<link>http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/</link>
		<comments>http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:16:44 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[application-level protocol]]></category>
		<category><![CDATA[Computer networking]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Dereferenceable Uniform Resource Identifier]]></category>
		<category><![CDATA[diverse applications]]></category>
		<category><![CDATA[generic protocol]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTP Protocol]]></category>
		<category><![CDATA[hypermedia information systems]]></category>
		<category><![CDATA[Hypertext Transfer Protocol]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Internet protocols]]></category>
		<category><![CDATA[Internet systems]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Representational State Transfer]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Uniform Resource Locator]]></category>
		<category><![CDATA[URI scheme]]></category>
		<category><![CDATA[web of data]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=213</guid>
		<description><![CDATA[This post is all about gleaning as much useful information as possible from the HTTP Protocol RFC 2616 in order to answer simple and complex Web of Data related questions.
I've chosen the rather old RFC 2616 (1999!) at this time rather than the upcoming HTTPbis because I feel it's important to know where you are [...]]]></description>
			<content:encoded><![CDATA[<p>This post is all about gleaning as much useful information as possible from the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">HTTP Protocol RFC 2616</a> in order to answer simple and complex Web of Data related questions.</p>
<p>I've chosen the rather old <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">RFC 2616</a> (1999!) at this time rather than the upcoming <a href="http://tools.ietf.org/wg/httpbis/">HTTPbis</a> because I feel it's important to know where you are coming from, and whilst many things about the Web of Data feel new, they are really age old principals and technologies which have never been used to their full potential. Further you won't be able to appreciate the refinements in HTTPbis if you don't know what it's refining.</p>
<p>Virtually everything from here on is just a snippet/quote or paraphrase of the RFC. Let's start with a simple one:</p>
<p><strong>Why use HTTP?</strong></p>
<blockquote><p>HTTP is an application-level protocol for distributed, collaborative, hypermedia information systems. ... HTTP allows an open-ended set of methods and headers that indicate the purpose of a request. ... HTTP is also used as a generic protocol for communication between user agents and proxies/gateways to other Internet systems ... HTTP allows basic hypermedia access to resources available from diverse applications. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec1.html#sec1.1">source</a></p></blockquote>
<p>I do fully recommend reading the entire RFC and the new <a href="http://tools.ietf.org/wg/httpbis/">HTTPbis</a>, most questions can be answered by returning to these documents and reading what they say (it's all in the detail); here's some more info gleaned from the RFC:</p>
<p><strong>The difference between POST and PUT, URIs as Identifiers, and URIs to identify more than just documents.</strong></p>
<blockquote><p>The fundamental difference between the POST and PUT requests is reflected in the different meaning of the Request-URI. The URI in a POST request identifies the resource that will handle the enclosed entity. That resource might be a data-accepting process, a gateway to some other protocol, or a separate entity that accepts annotations. In contrast, the URI in a PUT request identifies the entity enclosed with the request -- the user agent knows what URI is intended .. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6">source</a></p></blockquote>
<p><strong>Using POST RESTfully for more than just form data</strong>.</p>
<blockquote><p>The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. POST is designed to allow a uniform method to cover the following functions: Annotation of existing resources; ... Extending a database through an append operation. The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. The posted entity is subordinate to that URI in the same way that ... a record is subordinate to a database. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>What to do if something is created as a result of a POST request</strong>.</p>
<blockquote><p>If a resource has been created on the origin server, the response SHOULD be 201 (Created) and contain an entity which describes the status of the request and refers to the new resource, and a Location header. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>When to use a PUT request?</strong></p>
<blockquote><p>The PUT method requests that the enclosed entity be stored under the supplied Request-URI. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>How to handle a PUT</strong></p>
<blockquote><p>If the Request-URI refers to <strong>an already existing resource</strong>, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server.</p>
<p>If the Request-<strong>URI does not point to an existing resource</strong>, and that URI is capable of being defined as a new resource by the requesting user agent, the origin server can create the resource with that URI. If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>if extra headers were sent?</strong></p>
<blockquote><p>Unless otherwise specified for a particular entity-header, the entity-headers in the PUT request SHOULD be applied to the resource created or modified by the PUT. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>and what if I want to save it somewhere other than the URI specified by the client?</strong></p>
<blockquote><p> If the server desires that the request be applied to a different URI, it MUST send a 301 (Moved Permanently) response. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>and if the PUT can't be done..</strong></p>
<blockquote><p>If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be given that reflects the nature of the problem. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>can I use PUT with server side versioning?</strong></p>
<blockquote><p>A single resource MAY be identified by many different URIs. For example, an article might have a URI for identifying "the current version" which is separate from the URI identifying each particular version ... a PUT request on a general URI might result in several other URIs being defined by the origin server. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p><strong>how would I let a client know I implement server side versioning when they PUT?</strong></p>
<blockquote><p>If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent.. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5">source</a></p></blockquote>
<p>200 indicates a message body in the response ;)</p>
<p><strong>and DELETE?</strong><br />
well it's short so you may as well read it all..</p>
<blockquote><p> The DELETE method requests that the origin server delete the resource identified by the Request-URI. This method MAY be overridden by human intervention (or other means) on the origin server. The client cannot be guaranteed that the operation has been carried out, even if the status code returned from the origin server indicates that the action has been completed successfully. However, the server SHOULD NOT indicate success unless, at the time the response is given, it intends to delete the resource or move it to an inaccessible location.</p>
<p>A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 202 (Accepted) if the action has not yet been enacted, or 204 (No Content) if the action has been enacted but the response does not include an entity. <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.7">source</a></p></blockquote>
<p>note that a response can be 200, meaning you can return a response message (like i have X other versions here [list] or delete them all by clicking here [form input which POSTs to a service] ), or an RDF response that can be interpreted by a client to do the aforementioned :)</p>
<p><strong>but can't I tunnel all actions through GET?</strong></p>
<blockquote><p>Safe Method .. GET .. SHOULD NOT have the significance of taking an action other than retrieval! <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1">source</a></p></blockquote>
<p><em><strong>edit</strong>: removed small section about URI vs URL! Do however see the <a href="http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/comment-page-1/#comment-231">comment</a> from <a href="http://sw-app.org/about.html">Michael</a> which links to more information on the subject.</em></p>
<p><strong>Thanks for reading :)</strong><br />
There is much more information in the RFC, but those were some nicer points I found useful and relevant to current Web of Data topics &#038; discussions.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/semantic-web/http-rfc-paraphrased-for-the-web-of-data/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Virtuoso 6, SPARQL + GEO, Sample Queries</title>
		<link>http://webr3.org/blog/linked-data/virtuoso-6-sparqlgeo-and-linked-data/</link>
		<comments>http://webr3.org/blog/linked-data/virtuoso-6-sparqlgeo-and-linked-data/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 23:24:40 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[virtuoso]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Edinburgh]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[Group action]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[New York City]]></category>
		<category><![CDATA[Oxford]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[text search]]></category>
		<category><![CDATA[United Kingdom]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[York]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=183</guid>
		<description><![CDATA[Along side a whole host of improvements, the latest version of Virtuoso (Virtuoso 6) has added support for Geo data! One small sentence, one huge leap for mankind; it's vastly importany IMHO because it brings a new kind of link to Linked Data; a location based one.
Very brief intro: SPARQL is a fantastic query language [...]]]></description>
			<content:encoded><![CDATA[<p>Along side a whole host of improvements, the latest version of Virtuoso (<a href="http://bit.ly/dgbAXS">Virtuoso 6</a>) has added support for Geo data! One small sentence, one huge leap for mankind; it's vastly importany IMHO because it brings a new kind of link to Linked Data; a location based one.</p>
<p>Very brief intro: SPARQL is a fantastic query language which works over RDF and thus Linked Data, Virtuoso amongst other things has a powerful QuadStore which can be queried via SPARQL, and Virtuoso's implementation of SPARQL + the extensive suite of extensions they have implemented makes it the most usable and powerful query langauge available (again, in my honest opinion). In short this combination was enough to make me drop normal RDBMS systems and never look back.</p>
<p>Rather than rambling on about how fantastic it is though; here are some Virtuoso specific sample SPARQL (+GEO) queries, which should hopefully wet your appetite and give you some inclination of what can be done.</p>
<h2>Basic Geo Lookups</h2>
<p><strong>Things within 20km of New York City : <a href="http://bit.ly/9IBiVW" target="_blank">RESULTS</a></strong><br />
<code>  SELECT DISTINCT ?resource ?label ?location<br />
  WHERE<br />
  {<br />
    &lt;http://dbpedia.org/resource/New_York_City> geo:geometry ?sourceGEO .<br />
    ?resource geo:geometry ?location ; rdfs:label ?label .<br />
    FILTER( bif:st_intersects( ?location, ?sourceGEO, 20 ) ) .<br />
    FILTER( lang(?label) = "en" )<br />
  }</code></p>
<p><strong>Distance between New York City and London, England : <a href="http://bit.ly/bYNfWO" target="_blank">RESULTS</a></strong><br />
<code>  SELECT (bif:st_distance(?nyl,?ll)) as ?distanceBetweenNewYorkCityAndLondon<br />
  WHERE<br />
  {<br />
    &lt;http://dbpedia.org/resource/New_York_City> geo:geometry ?nyl .<br />
    &lt;http://dbpedia.org/resource/London> geo:geometry ?ll .<br />
  }<br />
 </code></p>
<h2>Querying Time and Space</h2>
<p><strong>All Educational Institutions within 10km of Oxford, UK; ordered by date of establishment : <a href="http://bit.ly/biZEHA" target="_blank">RESULTS</a></strong><br />
<code>SELECT DISTINCT ?thing as ?uri ?thingLabel as ?name ?date as ?established ?matchGEO as ?location<br />
WHERE<br />
{<br />
&lt;http://dbpedia.org/resource/Oxford&gt; geo:geometry ?sourceGEO .<br />
?resource geo:geometry ?matchGEO .<br />
FILTER( bif:st_intersects( ?matchGEO, ?sourceGEO, 5 ) ) .<br />
?thing ?somelink ?resource ; &lt;http://dbpedia.org/ontology/established&gt; ?date ; rdfs:label ?thingLabel . FILTER( lang(?thingLabel) = "en" )<br />
} ORDER BY asc( ?date )<br />
</code><br />
<strong>Historical cross section of events related to Edinburgh and the surrounding area (within 30km) during the 19th century : <a href="http://bit.ly/dfZU43" target="_blank">RESULTS</a></strong><br />
<code>SELECT DISTINCT ?thing ?thingLabel ?dateMeaningLabel ?date ?matchGEO WHERE {<br />
{<br />
SELECT DISTINCT ?thing ?matchGEO<br />
WHERE<br />
{<br />
&lt;http://dbpedia.org/resource/Edinburgh&gt; geo:geometry ?sourceGEO .<br />
?resource geo:geometry ?matchGEO .<br />
FILTER( bif:st_intersects( ?matchGEO, ?sourceGEO, 30 ) ) .<br />
?thing ?somelink ?resource<br />
}<br />
}<br />
{?property rdf:type owl:DatatypeProperty ; rdfs:range xsd:date } .<br />
?thing ?dateMeaning ?date . FILTER( ?dateMeaning in( ?property ) ) . FILTER( ?date &gt;= xsd:gYear("1800") &amp;&amp; ?date &lt;= xsd:gYear("1900") )<br />
?dateMeaning rdfs:label ?dateMeaningLabel . FILTER( lang(?dateMeaningLabel) = "en" ) .<br />
?thing rdfs:label ?thingLabel . FILTER( lang(?thingLabel) = "en" )<br />
} ORDER BY asc( ?date )</code></p>
<h2>Transitivity and Inference (v5 compatible)</h2>
<p><strong>Finding the shortest route between two "things" (HTML and XML in the example) : <a href="http://bit.ly/cJjsBL" target="_blank">RESULTS</a></strong><br />
<code>SELECT ?route ?jump WHERE<br />
{<br />
 { SELECT ?x ?y WHERE { ?x foaf:page ?xpage ; ?predicate ?y . filter( isURI(?y) ) } }<br />
 OPTION ( TRANSITIVE, T_DISTINCT, T_SHORTEST_ONLY, t_in(?x), t_out(?y), t_max(10), t_step('path_id') as ?path, t_step(?x) as ?route, t_step('step_no') AS ?jump )<br />
 . FILTER ( ?y = &lt;http://dbpedia.org/resource/HTML> &#038;& ?x = &lt;http://dbpedia.org/resource/XML> )<br />
}<br />
</code></p>
<p><strong>..and all routes between the two "things" : <a href="http://bit.ly/cQV4AW" target="_blank">RESULTS</a></strong><br />
<code>SELECT ?route ?path ?jump WHERE<br />
{<br />
 { SELECT ?x ?y WHERE { ?x foaf:page ?xpage ; ?predicate ?y . filter( isURI(?y) ) } }<br />
 OPTION ( TRANSITIVE, T_NO_CYCLES, t_in(?x), t_out(?y), t_max(5), t_step('path_id') as ?path, t_step(?x) as ?route, t_step('step_no') AS ?jump )<br />
 . FILTER ( ?y = &lt;http://dbpedia.org/resource/HTML> &#038;& ?x = &lt;http://dbpedia.org/resource/XML> )<br />
}</code></p>
<p><strong>Traversing Ontologies and (Sub)Classes; all subclasses of Person down the hierarchy  : <a href="http://bit.ly/aZ0oOM">RESULTS</a></strong><br />
<code>SELECT DISTINCT ?x WHERE<br />
{<br />
 { SELECT ?x ?y WHERE { ?x rdfs:subClassOf ?y } }<br />
 OPTION ( TRANSITIVE, T_DISTINCT, t_in(?x), t_out(?y), t_step('path_id') as ?path, t_step(?x) as ?route, t_step('step_no') AS ?jump, T_DIRECTION 2 )<br />
 FILTER ( ?y = &lt;http://dbpedia.org/ontology/Person> )<br />
}</code></p>
<h2>Free text search, scores and IRI Ranks (v5 compatible)</h2>
<p><strong>Searching over labels, with text match scores and additional ranks for each iri / resource  : <a href="http://bit.ly/bMNweO">RESULTS</a></strong><br />
<code>SELECT ?s ?page ?label ?textScore (<LONG::IRI_RANK>(?s)) as ?iriRank WHERE {<br />
  ?s foaf:page ?page ; rdfs:label ?label . FILTER( lang(?label) = "en" ) .<br />
  ?label bif:contains 'adobe and flash' option (score ?textScore ) .<br />
}</code></p>
<p><strong>Virtuoso 6.1 (Open Source Edition) released. For features &#038; bug fix details see: <a href="http://bit.ly/dgbAXS">link</a></strong></p>
<p><img src="http://webr3.org/blog/wp-content/uploads/2010/02/spo.jpg" alt="spo" title="spo" width="600" height="250" class="alignnone size-full wp-image-226" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/linked-data/virtuoso-6-sparqlgeo-and-linked-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Preparing Yourself for Web 3.0, LOD and 2010+</title>
		<link>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/</link>
		<comments>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:08:51 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[RDFa]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[everyday Web Developer]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[mentioned search engine traffic]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[public facing web pages]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[same author]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[United Kingdom]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Designer and SEO Specialist]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=172</guid>
		<description><![CDATA[If you work on the net then you'll have probably heard of the "semantic web", it's nice, you can ignore it and get along just fine though; however "Linked Open Data" (LOD) is now upon us and it's one of these things that can't be ignored, no matter which sector of the internet you work [...]]]></description>
			<content:encoded><![CDATA[<p>If you work on the net then you'll have probably heard of the "semantic web", it's nice, you can ignore it and get along just fine though; however "Linked Open Data" (LOD) is now upon us and it's one of these things that can't be ignored, no matter which sector of the internet you work in, if you do ignore it you'll probably become extinct (career-wise) pretty soon.</p>
<p>Sounds melodramatic but the whole point of this text is to explain in real terms the effect it'll have on the every day web worker; the web developer, web designer, seo expert, internet marketer etc. So that you, my current or future friends and associates still have a job in a couple  of years; and I researched it so that I would still have a job in a few years (+ because I love this stuff!)</p>
<h2><strong>A bit about Linked Open Data (LOD).</strong></h2>
<p>LOD can easily be a huge, scary and new thing, overwhelming in so many ways with all this talk of a cloud, billions of bits of information in some part of the web that is separate to "us"; take one look at the diagrams of the linked open data cloud and you'll see those academic acronyms of scientific organisations, future thinking global entities publishing their specialised data - nothing about you and me with our little blogs, and moreover nothing about our clients websites.</p>
<p>Sure it's about getting massive amounts of data on the web, linked and open for use, but it's different to how you expect :)</p>
<p>Linked Open Data is simply about making the info we already put on the net (like this post) machine readable as well as human readable.</p>
<p>It *IS NOT* about creating some system to dump everything from our database in some weird format for a machine to read somewhere.</p>
<p>It *IS* about wrapping the data on a normal page in a bit of markup so that a computer knows what it is.</p>
<p>If you're writing about london you simply add a tiny bit of markup that says 'about="http://en.wikipedia.org/wiki/London"' - honestly that's it in real terms, the user reading your page knows its about London, England - and now a system like google knows that it's definitely about London, England too. In most cases though it's simpler; it's a case of saying this article is titled "x" and made by person "y" - that alone makes a huge difference to the net.</p>
<h2><strong>How LOD will change the web.</strong></h2>
<p>More Links! We're currently in the age of search, if you want something you search for it, to get more info you search again, and again and so on.</p>
<p>Link trust was at an all time low a few years ago, sure you'd click a navigation link on a site but not a link in a document, because it was probably to a popup, an advert, something you didn't want. Not now though, mainly thanks to bloggers with their in text links to other pages, the world has grown to trust the link again.</p>
<p>Linked Open Data will spawn a massive increase in related data on page, related resources, articles, images, videos and more. And thus many, many more links.</p>
<p>This means that people will search less, and explore more; ever increasingly.</p>
<p>It's unavoidable, and even if a website isn't enhanced with all this extra linked data, odds are the user will have a browser extension or app running that will show all the related information anyway - these technologies are already here and used - adoption *will* grow, no way out of it, change happens.</p>
<h2><strong>Info for specific sectors</strong></h2>
<p>This isn't the meant to be a full introduction or all encompassing, in fact nowhere near it - if you want the ins and outs of LOD then look elsewhere. This info is for the everyday Web Developer, Web Designer and SEO Specialist.</p>
<p><strong>Web Designers (+ those who work with html)</strong></p>
<p>To be honest I think this change might hit you guy's hardest; you see XHTML+RDFa is already here, it'll be massive soon (and don't go thinking HTML5 will get you out of it, RDFa will be in there too). In short XHTML+RDFa is xhtml as you know it, but with support for embedded RDF information, really it means a few new properties on elements that let you say what they are; in place FOAF, Dublin Core (DC) and the like. Any further description is outside the scope of this document ;)</p>
<p>What this means for you is that as well as having potentially a lot more to display on page (linked data) and lot's of UI challenges, you also now have to cater for this RDFa data in your templates. It's not like other W3C stuff which you can ignore, different to cross browser compatibility, if you leave it out or skip the RDFa stuff then the site will potentially be outside of the LOD network, traffic will drop and ultimately the site may as well not be "in" the web (might be a few years before that though) - so in many ways the end of ignorance and excuses.</p>
<p>You can currently slap out some HTML4, change the doctype, stick on jquery and make it "look" web 2.0 - and people will think it's web 2.0; with web 3.0 (the linked open data based net) you can't do that, it either is web 3.0 or isn't; there isn't a "web 3.0" look, just web 3.0 source.</p>
<p>Drupal 7 has RDFa support out of the box; within the year I bet every CMS &amp; Blog will too; and if you make a new template with the RDFa cut out because you "don't know it", then I'm pretty sure it won't be long before your clients or employers cut you out; and we don't want that.</p>
<p>Further, if you don't - developers will be on your back big time &amp; changing your source; or worse the SEO guys will be ;)</p>
<p><strong>Web Developers</strong><br />
All of you need to know what triples are (subject-predicate-object), and URIs and CURIEs (not your normal URIs, URIs as Identifiers).</p>
<p>If you're going to be exposing data in your systems then you need to get used to mapping database properties through to RDF triples; that a user is a foaf:person with a foaf:name; that tags are ctags and dc:subjects, and that articles have a dc:title (keeping it simple for this).</p>
<p>If you're going to be consuming LOD data then you need to learn a bit more, RDF, SPARQL, Owl, ontologies and a bit more.</p>
<p>And if you want to get "in to" LOD in a big way, then go do it.</p>
<p><strong>SEO Specialists</strong><br />
You need to know what the designers know, and you'll be changing from SEO specialists to data exploration optimizers or suchlike, focus will be on how you can make the data machine readable and get it linked in by the right services.. should be fun!</p>
<p>Further, you'll need to watch for how to get traffic to the sites, as mentioned search engine traffic will drop slowly over the next few months and years; with more focus going on "links" from related pages. As for the diggs &amp; reddits, who knows how it'll effect traffic from them.</p>
<h2><strong>Summary</strong></h2>
<p>IMHO it's in all of our best interests to just get on with this, it will happen and the sooner YOU do it and convince your employers you have to make this move the better, companies can easily loose clients too if your competition is offering "web 3" and you aren't.</p>
<p>At no point have I seen a tech hit the web which could literally leave people behind if they don't jump on board; it's happened in other industries and now ours (remember VHS?).</p>
<h2><strong>The two questions most people / companies / clients will immediately raise..</strong></h2>
<p><strong>1] We don't want to expose all our data for reasons X,Y&amp;Z!</strong></p>
<p>LOD isn't about exposing all the your data on the internet; it's about making the data you've already exposed on the internet in a more granular fashion, it's about making that data machine readable.</p>
<p>Presently you may have an article on a page with a title and author credit in HTML, in the future you would still have the same author and title, however they would be wrapped in markup that allows a machine to understand that "Joe Blogs" is a person who is the author of the article, and that the articles title is "I'm scared of exposing my data".</p>
<p>If you consider you're public facing web pages, everything on that page is already exposed, all we're doing here is describing what each bit of data is in a way we can all use.</p>
<p><strong>2] Trust &amp; Junk</strong></p>
<p>One common misconception is that you have no control over the source of the data you pull from the "cloud", and that it could essentially be junk. However this couldn't be further from the truth, what we do is to find a source of data we trust that has their data exposed in a machine readable format, then query it for the exact information we want, and finally include or display it in our own system.</p>
<p>To illustrate, consider you wanted to reference the countries of the world with population in your system. Currently you would have to build  a database table, populate that data with country name and country population, then write some code to display that data. In this scenario you'd probably get the population data from a credible source such as wikipedia (copy and paste it in to your own database).</p>
<p>By using linked open data, you could treat the machine readable version of wikipedia (dbpedia) as your database table, query it instead and again write some code to display the data on you're own site.</p>
<p>You're displaying the same data, from the same trusted source; and you've selected which source you trust; it's not a case of just querying some cloud of data; it's a case of choosing which source(s) you want / trust and querying them.</p>
<p>As an additional bonus you don't need to worry about your information going out of date, as you're getting the data straight from source, the population of each country is updated on your site whenever it's updated on wikipedia.</p>
<p>Further, you don't need to worry about maintaining that list of countries, as in a single query you can pull out a list of all countries with each ones population, as the world grows and changes, so does your data.</p>
<p>Further still! once you've made the move to using some linked open data, all the data you could want is at your finger tips, let's say a decision is made to include 30 different bits of information about each country in your system. Consider that task for a minute - full system change, finding, collating and entering all that data; let alone maintaining it! Well, I'm sure you can guess the next bit, using LOD we can simply expand our original query to include the other bits of information we want, then display it - job done.</p>
<p><strong>That's it.</strong></p>
<p>Good Luck!</p>
<p>nathan</p>
<p><img class="alignnone size-full wp-image-173" title="future" src="http://webr3.org/blog/wp-content/uploads/2009/10/future.jpg" alt="future" width="600" height="250" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The end of Search? Linked Data, Semantic Web &amp; thoughts.</title>
		<link>http://webr3.org/blog/semantic-web/the-end-of-search-linked-data-semantic-web-and-my-vision/</link>
		<comments>http://webr3.org/blog/semantic-web/the-end-of-search-linked-data-semantic-web-and-my-vision/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 23:03:09 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[linked data]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[DBpedia]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[Georgi Kobilarov]]></category>
		<category><![CDATA[Globally Unique Identifier]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[Resource]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[software side]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Virtuoso Universal Server]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=164</guid>
		<description><![CDATA[Earlier today I was reading an interesting post by Georgi Kobilarov entitled "What’s wrong with the Linked Data world, part 1 - Keyword Search"; this particularly sparked my interest because in all honesty "search" had never came in to my vision of the semantic web / linked data world.
To me, the draw of linked data [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today I was reading an interesting post by <a href="http://www.georgikobilarov.com/">Georgi Kobilarov</a> entitled "<a href="http://blog.georgikobilarov.com/2009/10/whats-wrong-with-the-linked-data-world-part-1-keyword-search/">What’s wrong with the Linked Data world, part 1 - Keyword Search</a>"; this particularly sparked my interest because in all honesty "search" had never came in to my vision of the semantic web / linked data world.</p>
<p>To me, the draw of linked data and the semantic web has always been exploration; the notion that even the most unskilled of publishers should be able to enrich their content via semi-automated software to the standards of a near perfect wikipedia article has always been the driving force. Additionally, content classification, relation, linkage, data centralization and the like are all major benefits which will make a vast difference to the usability of the web.</p>
<p>Search will always be a major part of the internet, at the moment we use search to find content on a specific subject, then search again to find more, and search again to find related or expanded info, help, facts, answers, whatever; however, in the future I hope to see search move to a less prominent role, one where we use search to find the most suitable "entry point" in to the web of linked data - and from there every other piece of related / expanded information is either on page, or a click (link) away.</p>
<p>Some major hurdles need to be jumped before we can get to that stage though, both through lack of organization and lack of appropriate software. Personally I have a mental blueprint / overview of what's needed (imho), and some very specific ideas on the software side, with any luck I'll get a chance to contribute + build some of this, we'll see.</p>
<p>Some thoughts of what's needed from my little brain.</p>
<p><strong>Linked Data Ping</strong><br />
A central service API which is pinged by all software as it publishes information with machine accessible content. (Needed way before (x)HTML+RDFa takes off). Provides a stream of all recent pings to be consumed (xmpp pub-sub?).</p>
<p><strong>Clustered Servers holding a centralized data GUID lookup and proxy.</strong><br />
In essence all resources on the net should be a linked pair of GUID to endpoint, each endpoint should contain a reference to the GUID, and each GUID should be a URI which redirects to the endpoint, endpoints change GUID/URI stays unique. In an ideal scenario when somebody creates a link to X resource or Y document, the publishing/controlling software should replace the endpoint with the GUID instead. This would also enable multiple other services such as centralized pingback, references, statistics etc.</p>
<p><strong>Machine Readable Data Cache.</strong><br />
Together with the aforementioned services a high availability database of cache'd information should exist; in principal this would work by reading the stream of "Linked Data Pings", getting the GUID for the content and then retrieving all machine readable data and caching it. Much like the RDF data exposed through dbpedia, however for everything. Even if only a predefined subset of the common rdf vocabularies was stored and exposed it'd be enough to start, from there all other domain specific ontology could be retrieved by reading the endpoint itself.</p>
<p><strong>Semantic CMS</strong><br />
Ideally we need a new breed of CMS, one that not only has simple FOAF and Dublin Core (~Drupal 7), but also support for full content enrichment using the aforementioned machine services; and provides a simple UI for manually exposing entities, events, facts etc. (Think highlight name in text, mark as Person with Name, system finds guid and builds relevant RDFa and we have another triple of linked data.)</p>
<p>The possibilities from this point are endless; if you're reading this document after all this has been made, then you'd see a whole host of in text links through to more information on each keyphrase, person, entity etc; you'd be aided by auto injection of sources, related reading, comments, further documents discussing the content here, in short you'd be exploring the net one click at a time, linked data all the way; not searching.</p>
<p>In summary (and very much imho), Linked Data is not for searching, it's for linking data - search was invented to address the issue that everything isn't linked, when it is then the link takes precedence again.</p>
<p>My only worry in all of this, is the idea that all rdf triples are fact, and true - already the major search engines are exposing rdfa data in summaries, 5* ratings on products and suchlike, the room for abuse will only get worse.</p>
<p>Thanks Georgi for placing the spark that clarified my current thoughts.</p>
<p>Finally, this isn't a biased opinion in anyway, or an endorsement, but to me openlink virtuoso, dbpedia, zemanta and open calais are leading the way and enabling all of this; together with the hard working folks contributing to the various linked W3C projects and specs. If only dbpedia/zemanta/calais would unify there uri's/guids/endpoints we'd be a lot further along.. (well I would ;).</p>
<p>Regards!</p>
<p><img class="alignnone size-full wp-image-167" title="linkeddata" src="http://webr3.org/blog/wp-content/uploads/2009/10/linkeddata.jpg" alt="linkeddata" width="600" height="250" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/semantic-web/the-end-of-search-linked-data-semantic-web-and-my-vision/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

