Priorities for RDF

A couple of weeks ago I did a talk at the TPAC Plenary Day about why RDF hasn’t had the uptake that it might and what could be done about it.

I felt quite uncomfortable about doing this for many reasons. The predominant one is that I’m well aware that the world is made by the people who turn up. It is far far easier to snipe from the sidelines than it is to put in the effort to attend telcons and face-to-face meetings, to engage on mailing lists, to write specifications and implementations and tutorials.

On the other hand, what I hope is that the perspective of someone who is outside that process, someone who tries to understand and interpret and use the results of that process, might be valuable. And so I aimed to provide that honestly.

In that spirit, I’m going to put my stake in the ground and say that there are three areas where I think W3C should be concentrating its efforts:

  1. standardising (something like) TriG — Turtle plus named graphs
  2. standardising an API for the RDF data model
  3. standardising a path language for RDF that can be used by that API and others for easy access

and that it should specifically not put its efforts into standardising another syntax for RDF based on JSON.

Format Standardisation

The first point is that I think we need to decide on a single recommended format for RDF.

Fundamentally, unlike XML or JSON, RDF is defined first and foremost as a model rather than as a syntax. That means it can be expressed in a number of syntaxes, the most common of which are RDF/XML, Turtle and N-Triples though of course there’s also RDFa, RDF/JSON, JSON-LD and N3 and if you start factoring in named graphs you can add TriX, TriG and N-Quads to the list.

Except for a few corner cases, it would be perfectly possible to express the same RDF model in any of these syntaxes. Why is this so bad? Surely having choice is a good thing, because publishers can choose an option that fits with their workflows? And aren’t all these formats generated automatically anyway, such that the same data can be provided in many ways with no overhead?

Well, no, there are actually two ways in which having multiple syntaxes makes adoption harder.

First, publishers aren’t always generating data automatically; in a number of cases (which I think and hope will grow) RDF data is being generated just like CSV files are, as static documents which are simply published in the same way as other static documents. In these cases, publishers either have to do the research and make a decision about which format to use, or produce the data in multiple formats. This is a particular challenge when people aren’t convinced they want to generate RDF anyway.

Second, toolsets have to handle producing or consuming multiple formats. That means more code, more testing and more maintenance on both the production and consumption sides of the equation, all of which raise the implementation burden.

Of course it’s natural that during the initial stages of the use of a technology that we should see a variety of patterns of use: there need to be innovations and experiments so that we can find what works and what doesn’t. But as that technology matures, we need to start bedding down some basics. There need to be agreed foundations that, even if imperfect, are solid enough for the majority of us to build upon. And we need to exercise some self-restraint to concentrate on doing that building rather than revisiting those decisions.

We have a number of years of experience now about what formats are easy to understand, to pass around, to create and to process. It is time, I think, to pick one, to get it standardised, to deprecate others and to provide a much cleaner and clearer picture to publishers and consumers.

Of the formats that we have, the one that fits best with the RDF data model and is simplest for humans to understand is Turtle. But it needs to support named graphs, so that it’s possible to share the RDF datasets that are exposed within a SPARQL endpoint, which is why I say W3C should standardise something like TriG.

RDF APIs

The second point is to work on standardising the APIs that are available for developers who work with RDF. Why standardise APIs? Because it would make accessing RDF easier and more predictable for web developers, who often work across multiple languages and platforms. Developers don’t really care about syntax — although having something readable is useful for debugging — they care about the way in which they get to interact with in-memory structures that hold the data.

RDF needs an API that exposes its internal model (of literals and resources and triples and graphs and datasets) in a way that isn’t too onerous for people to use. There are lots and lots of RDF APIs about, within the various parsers that are available for different platforms; the only one that’s approaching a standard is the one embedded within the RDFa API specification. I would like to see that disentangled from RDFa and for it, or something like it, to gain traction amongst the writers of RDF libraries such as the Redland RDF libraries, RDFLib, Moriarty, Reddy, rdfQuery and so on and on.

But having an API for RDF’s data model is not enough.

I think there is a lot that we can learn from XML’s experience here. James Clark’s recent blog post about XML and the web describes what it’s like for developers working with XML compared to JSON:

The fundamental problem is the mismatch between programming language data structures and the XML element/attribute data model of elements. This leaves the developer with three choices, all unappetising:

  • live with an inconvenient element/attribute representation of the data;
  • descend into XML Schema hell in the company of your favourite data binding tool;
  • write reams of code to convert the XML into a convenient data structure.

By contrast with JSON, especially with a dynamic programming language, you can get a reasonable in-memory representation just by calling a library function.

So JSON is popular because accessing information within the JSON is really easy. And that’s for two reasons:

  1. it’s parsed with a single simple function call in a common library
  2. the result of parsing is simple to navigate; typically you can do so using native methods such as dot-notation paths

The first of these is a simple matter of winning hearts and minds. The second is the important one: it’s easy to use because the underlying JSON model fits neatly onto the object-oriented programming paradigm that most developers use.

XML isn’t so popular among web developers because its underlying model doesn’t fit well into most programming languages: it has attributes and mixed content and a whole bunch of other things that don’t map straight-forwardly onto objects-with-properties. Navigating through XML (or HTML) structures using a DOM is tedious and automatic binding mostly doesn’t work.

What about RDF? On the face of it, RDF is a good fit with object-oriented models; they both follow a basic entity-attribute-value approach. However, there are (at least) three things in RDF that do not fit with the object-oriented model:

  1. Properties in RDF are identified through URIs rather than simple names (ie those containing just letters and numbers and underscores). Some programming languages, such as Javascript, let you have properties that aren’t simple names, but you then have to access them through the relatively clunky [] notation rather than dot-notation paths. Properties are first-class objects in RDF with things like labels and ranges and inverses; fitting with standard programming languages here means using reflection and having the ability to annotate fields, and everything gets a bit mind-bending.

  2. Values in RDF often have datatypes or languages associated with them, and the set of datatypes that you can use is completely extensible (and of course datatypes are first-class objects, with their own properties, too). This wouldn’t be so bad except that making every value an object means comparisons with basic strings or numbers won’t generally work.

  3. In RDF, a property can have more than one value (an unordered bag of values, if you like) or it can have a value that is a rdf:List (an ordered sequence of values); it can even have many values which are rdf:Lists. On the other hand, the object-oriented model generally supports values that are arrays (and of course you can have arrays within arrays), which are always ordered. So there is always a choice to be made when mapping from an object-oriented model to RDF, about whether the values should be at the same level or be rdf:Lists.

In other words, just as with XML, there is no straight-forward mapping from RDF to an object structure that developers can immediately use. That doesn’t stop us trying, of course:

There’s the approach that we use within the linked data API and elsewhere, which is to make it easy for data publishers to create simple JSON versions of the RDF they publish. A website-specific configuration file determines what the mapping looks like. URIs of properties get turned into readable names (and provide the map back to the original property URI, so that it’s possible to get more information about the property). Datatypes and languages are ignored by default (but mapped onto structured values if so configured). And the distinction between properties-with-multiple-values and properties-whose-value-is-a-List is ignored. We purposefully lose some of RDF’s expressivity and power in order to gain usability. You can see the result in action at http://education.data.gov.uk/doc/school and http://education.data.gov.uk/doc/department for example.

There’s the approach that Nathan has taken within js3 which is to create libraries that, with a bit of work on the client side, give a way of mapping RDF into an object-oriented structure which is easy to manipulate (or vice versa, create RDF from OO structures). It’s the same basic principle as helping publishers to generate JSON, but the interpretation and mapping is done by the client rather than the publisher. The work that Nathan’s done to manage this in Javascript is very impressive; I don’t know whether the same approach can be mapped to other languages.

But as James intimated, data binding is hairy and scary. Mappings between different data models are always imperfect, lossy, sensitive to what seem like small changes and therefore hard to maintain. I remember nodding along as Mike Kay talked about this at the XML Summer School in relation to the use of XML: the horrors of working with systems in which there three way maps between relational and object-oriented and XML structures, and the relief that comes with working with an XML-only architecture. I suspect this same observation is one of the drivers behind the growth of JSON databases.

On the other hand, you know, perhaps RDF is close enough to the object-oriented model that it won’t be so bad. Perhaps we could find a way to standardise on a method of configuring applications that do the mapping, such as defining short names for properties, describing how to handle objects with datatypes and languages and so on. We have a body of experience that can be learnt from, including the ones above, and perhaps it can be tied into the RDB-to-RDF work too. The biggest challenge, I suspect, will be to create something round-trippable.

Path Languages

The other option that James didn’t mention but that I touched on in my TPAC talk is to learn from how working with HTML and XML has been made easier in libraries such as jQuery or hpricot. These libraries still allow the HTML and XML to be accessed through a DOM, rather than mapping HTML or XML into object structures, but make the lives of developers simpler by supporting querying of the HTML/XML using path languages that are designed to be used to query those kinds of structures. For HTML, that’s CSS; for XML that’s XPath. (It’s the same approach as is used for strings: we use regular expressions for many operations rather than working with them at the character level.) Path languages work over the native model; all that’s offered in the library are functions that take strings (holding the path language) and return objects or values as appropriate.

I don’t know exactly what it looks like, and it might already be out there (the world moves fast and I know I’m not aware of everything), but what I think we need is a path language for navigating around RDF, probably based on SPARQL property paths or the FRESNEL selector language and an API (or APIs) that uses it. For example, something that lets developers use code like:

graph.find("*[foaf:nick = 'web3r']/foaf:name")

to pick values out of an in-memory graph. In my opinion, something like this would be much more likely to bring benefits than a data binding approach.

Why Not RDF in JSON?

What I’ve tried to explain above is firstly that we already have too many syntaxes for RDF, and secondly that the main barrier to developers using RDF is the way in which they are forced to interact with that RDF once they have hold of it, not the syntax itself. The syntax that we use for RDF really doesn’t matter, because developers interact with the in-memory dataset, not directly on the syntax.

Nathan’s recent post on Opening Linked Data, which is worth reading in its entirety, captures the essence of the issue:

You can’t shoe horn RDF in to JSON, no matter how hard you try - well, you can, 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

In other words, using JSON as the basis for an RDF syntax doesn’t actually win you anything in terms of the ease of processing of that RDF. In fact, I’ll go further and say it has exactly the same bad qualities as RDF/XML.

One of the bad things about RDF/XML is that it misleads people into thinking they can use normal XML tooling to process RDF, but XML tooling exposes the XML tree, not the RDF graph that they need. It’s good enough in some circumstances, of course, but it’s not working with RDF as RDF. Similarly, just because you’re using XML tools doesn’t mean RDF/XML is easy to generate; you’re a lot safer to generate correct RDF/XML from an in-memory graph, in the same way as generating XML using string manipulation is harder work than it first appears.

In exactly the same way, I think that a JSON-based syntax for RDF will mislead developers into thinking that they can interpret and generate that JSON like they can normal JSON, and interact with it at that level, when this simply isn’t the case.

The only advantage that I can see for a JSON-based RDF syntax is equivalent to the only advantage of RDF/XML: it is easier to store for people who use JSON databases, just as RDF/XML is easier to store for people who use XML databases. I am not sure that benefit is worth the cost of an additional RDF syntax; isn’t RDF better stored in a triplestore?

Summary

So to reiterate, as far as I’m concerned, W3C and the RDF community should be concentrating on a syntax for RDF that doesn’t come saddled with those kinds of assumptions, which I think is Turtle + graphs; something like TriG. They should be concentrating on developing a standard API for RDF access that has a chance of adoption among the developers of RDF libraries, and on working out what parts of SPARQL and FRESNEL could be used to create a path language that could be reused in several contexts, including within such an API. And these should be done in preference to a RDF syntax in JSON which doesn’t solve the core problems, and in fact just adds another syntax to the mix.

Comments

qCCiJIxBTClwyCugfe

If I'm honest, since the green tempalte you used (which was great), the site is less readable with every new release. The new tempalte looks good, but there's much noise and you can't focus on the read.I can't understand why the articles are even less readable on the article page than on the front one. Of course, it's for all the advertising you put on it. It's fine that you want to win a few bucks for making all this great free stuff, sure. You're in your perfect right, but since the RSS can't read the full articles and the site is not readable enough (at least, for me), I have a problem :-/Probably the problem would be resolved by eliminating one of the columns in the article view, and giving more visual contrast to the content. The sponsored links and the Adsense are taking too much visual protagonism IMO.Anyways, thank you for all the effort you put here. I really appreciate that :)

respond this topic

Buy custom term paper and get the many of benefits you couldn’t think of. Many paper writing services do everything they can so that you will get an opportunity to get professional help with paper writinf at all times.

Re: Priorities for RDF

Hi Jeni,

Good post! However, I think you might be to far ahead. SPARQL 1.1 Update is not even out the door yet and we need to see if it can fulfil the need for serialising quads. SPARQL 1.1 Update[1] supports syntax like the following for serialising quads. Although I agree a store API is needed, I think a standard store protocol must be agreed first.

PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA { 
  GRAPH <http://example.org/publisher> {
    <http://example/book3> dc:title "A new book" ;
                           dc:creator "A.N.Other" .
  }
}

[1] http://www.w3.org/TR/sparql11-update/#t411

Re: Priorities for RDF

awesome!! Worked :)

Re: Priorities for RDF

not so bad…

Re: Priorities for RDF

I never used RDF before but I am looking for something similar to this. I will check and see if this can work too.

Re: Priorities for RDF

I’m working on a path language, too. See http://www.furia.com/page.cgi?type=log&id=324 for an intro, and www.needlebase.com for the system in which it is implemented…

Re: Priorities for RDF

Thanks Jeni,

I really enjoyed your talk at TPAC, and really enjoyed this post as well.

I completely agree that path languages have a great potential for RDF. Your post actually encouraged me into coding an idea that I have been having for quite a while: integrating a path language tighly with a programming language using operator overloading. This actually works pretty well in Python, and could probably work in other languages. My code lives here.

Of course, a standard path language would have to be more independant from a particular programming language, but I think this is also an interesting lead.

Thanks again for such interesting reading.

Re: Priorities for RDF

Food for thought, and lots of that. A few things to consider:

  • We might be heading toward five or six RDF/JSON dialects; there’s a reason why Nathan’s been calling for an RDF/JSON forum on semantic-web earlier today. Picking one and standardizing can be hugely desirable over having five RDF/JSON serializations.

  • How complete do we think an RDF/JSON needs to be? And does the use case include JSON->RDF->JSON round-tripping, RDF->JSON->RDF round-tripping, or none of the above? (I.e., where do we permit ourselves to loose information?)

Re: Priorities for RDF

Hi Thomas,

On your first point, I guess I’m talking about priorities (the hint’s in the title) for RDF adoption. Is one RDF/JSON format better than six? Sure! Is having an RDF/JSON format standardised more important than having something like Turtle standardised, and some kind of resolution about how to handle named graphs, and other formats deprecated? No way!

On your second point, my opinion is that there are three types of RDF-in-JSON:

  1. RDF expressed in JSON designed for interchange, which no web developer would ever want to work with natively but that completely expresses the RDF model, such as RDF/JSON
  2. RDF expressed in JSON in a way that web developers might consider working with, such as JSON-LD
  3. RDF converted to a ‘natural’ JSON format that web developers might consider working with, but that loses some expressivity in the process, such as the simple JSON format generated by the linked data API

What I was trying to express in my post was that I don’t see any advantages that 1 or 2 give developers over a Turtle representation, and that especially in the case of the second, that I worry it will mislead and frustrate developers in the same way as RDF/XML.

I can see the point of 3, where you accept losses on the way from RDF to JSON. I can see the point of a JSON-GRDDL type of approach, where ‘natural’ JSON is mapped to RDF in some regular way. In both cases there are moderately complex issues to overcome, but I’m sure they are surmountable with enough work. Again, though, I think there are bigger fish to fry; standardisation of the mappings between RDF and JSON wouldn’t be my first priority.

But in the end I know W3C needs to listen to its team and its members, to the people who are actually able and willing to put in the time and effort that it takes to create standards.

Jeni

Re: Priorities for RDF

thats right!! :)

Re: Priorities for RDF

Distinguishing these three options is excellent analysis, thanks Jeni. I agree that pursuing option 2 is likely to do more harm than good. I see both 1 and 3 as useful, but an approach that is trying to solve both at the same time will solve neither.

Re: Priorities for RDF

How can I get this file for my website since I want to apply for something similar to this point and other websites too.

Re: Priorities for RDF

I like purple in your web. It’s nice.

Re: Priorities for RDF

How can I get that file for RDF and other ways like the results.

Re: Priorities for RDF

Where to get all things like this and other RDF for website?

Re: Priorities for RDF

Once again, you’ve written a great post that makes my head hurt while trying to think through the implications. The idea most insightful in here are the impacts of whether a jquery plugin for rdf search, which lets you use the standard notational structures for json/jquery and fills in the rdf queries underneath as it goes. The caching and structures layers here are probably useful. Th

With that, and features of legislation.gov.UK such as HTML fragments, I wonder what can be done for search of data and returning and displaying the pretty HTML representation with links etc of driven drilled-down search that was just facilitated via JavaScript.

Jquery’s other features might offer some solution to the things otherwise hard to split up and reuse across services.

Re: Priorities for RDF

Lots of good ideas here, thanks. As for the path language for RDF, Gremlin (https://github.com/tinkerpop/gremlin/wiki) has a nice XPath-like path language which seems able to express complex paths quite succinctly.

Moving RDF out of the silo

Having read James Clark’s and Nathan/webr3’s articles, I just agitated within W3C to push forward an RDF JSON serialization (which was already in the works, unbeknownst to me), but your article made me realize that that may be too simplistic an answer. I like your answers better.

I totally agree with your call for an RDF API, and hope that it is developed with some non-SemWeb folks (including browser vendors) in the loop. If we are really going to open up these data stores to the average developer, we need a much more straightforward way to consume and transform the data.

Thanks for such a thoughtful and thought-provoking article.

Re: Priorities for RDF

Fully agree that an RDF path language would be incredibly handy.
Fully agree that RDF/JSON is a foolish and doomed effort, just like RDF/XML.
Not sure on the question of APIs.
Disagree on TriG.

Adding named graphs to Turtle—in other words, standardizing TriG—will do more harm than good. Next you would get people who want to put multiple graphs into their FOAF files, and next you need quints instead of quads to represent the provenance of such multi-graph files. Therefore I’m against adding named graphs to RDF/XML, Turtle, RDFa, or any other document-oriented RDF syntax.

You rightly state that we need a syntax for exchanging the contents of triple stores, which can contain multiple graphs. The answer, in my opinion, is N-Quads.

One friendly format for hand-authoring and teaching. Another one (the simplest possible) for exchanging large dumps. As bad as syntax proliferation might be, one size does not quite fit all, IMO.

bpjnIHdSewgjrIeeGN

RDF: I fought the maurkp, and the maurkp wonI spoke with a colleague of mine yesterday. He’s working with XUL/Mozilla at the moment. His least favourite bit? The RDF/XML. Hates it. Since he knows I’m an RDF fan, he rightly wonders what could I see in it. So here’s a six year old maurkp langua

Re: Priorities for RDF

I’m not completely averse to that, but I guess that:

  1. I don’t understand why putting multiple graphs into FOAF files would be such a bad thing; for example if someone wanted to include historical information (eg maiden name) without having multiple files.
  2. I don’t understand why having quads implies that you will need quints; you can make statements about the documents that contain the named graphs in the same way you can about any other resource; those statements will live in a graph, very probably the default graph within the document in which they are contained. There’s likely a need for a little vocabulary that expresses relationships between graphs, but I can’t see how quints would come into the equation.
  3. If having several graphs in a single document really does cause a problem, I don’t understand how that problem is avoided by using N-Quads as the syntax for the quads rather than TriG.

Can you explain further?

FWIW, one of the things that I like about Turtle is that N-Triples is a subset of the syntax. It would be good if Turtle+graphs managed to have the same property for N-Quads, so that format could be parsed as part of the unifying syntax.

Re: Priorities for RDF

SPARQL uses the named graph data model. When dealing with data of different provenance, the obvious thing to do is to use the source as the graph name. If you live in a world where one RDF file can contain multiple graphs, then the next thing that happens is that a file from www.jenitennison.com will contain a graph with a URI on richard.cyganiak.de. How do I map that to named graphs in my quad store? Do I use the source (www.jenitennison.com) or the used graph name (richard.cyganiak.de) as the named graph in my store? Either way, I lose essential information. Or do I combine both URIs into one? Then I lose the ability to do useful queries via SPARQL’s GRAPH keyword. To solve that problem, we’ll have to start building quint stores.

Shipping multiple graphs in a single file kills our ability to use SPARQL stores while retaining provenance.

The solution is to not do that, except in the special case of exchanging dumps of entire repositories, a la Billion Triples dataset or LOD Cache. The best format for exchanging large RDF dumps is already N-Triples, or sometimes N-Quads, so this is the only format that really needs support for multiple graphs.

To express a maiden namen, why not use ov:maidenName? ;-)

Re: Priorities for RDF

Hi Richard,

OK, I see. An approach could be to artificially create a named-graph-from-source URI for the triples about richard.cyganiak.de that were found within www.jenitennison.com but also merge those triples into the richard.cyganiak.de named graph. You could then add triples that said that the richard.cyganiak.de named graph was a superset of the named graphs from the various sources from which you have information about the contents of the richard.cyganiak.de named graph.

Of course the canonical source to work out what triples the richard.cyganiak.de graph actually contains is richard.cyganiak.de, but this seems to be the same trust issue as we have when working out the canonical set of triples that relate to a particular resource: resolve it and see.

But I can see your argument. These are precisely the issues that need to be drummed out for any kind of standardisation around named graphs.

If there were going to be separate triples and quads formats, I think I’d rather use something based on a multipart/mixed mime type rather than N-Quads. This is partly because it would be more readable, and partly because it very explicitly packages a set of RDF documents, which is really what we’re after when we’re passing around SPARQL dataset dumps.

Jeni

Re: Priorities for RDF

great said!!

Re: Priorities for RDF

Jeni, that proposal doesn’t really work—what happens if at jenitennison.com I find a graph with name richard.cyganiak.de, and at iandavis.com I find another graph with the same name? Which one do I store in my SPARQL store under the richard.cyganiak.de name?

Given than N-Quads has been around for years, is in wide use, and is dead simple, why invent something new?

Re: Priorities for RDF

I felt quite uncomfortable about doing this for many reasons. The predominant one is that I’m well aware that the world is made by the people who turn up. It is far far easier to snipe from the sidelines than it is to put in the effort to attend telcons and face-to-face meetings, to engage on mailing lists, to write specifications and implementations and tutorials. Kontaktannonse

Re: Priorities for RDF

Richard,

I think that it would be a decision that you would have to make for your particular SPARQL endpoint.

One possibility is that you store:

  1. graph with an automatically generated name such as richard.cyganiak.de?source=jenitennison.com containing the triples from jenitennison.com alongside metadata about its provenance
  2. graph with an automatically generated name such as richard.cyganiak.de?source=iandavis.com containing the triples from iandavis.com alongside metadata about its provenance
  3. graph named richard.cyganiak.de containing the triples from both, alongside triples indicating that it has two subgraphs which are richard.cyganiak.de?source=jenitennison.com and richard.cyganiak.de?source=iandavis.com, along with provenance information about them

Another possibility is that you determine that you trust iandavis.com more than jenitennison.com and therefore populate the richard.cyganiak.de graph with triples from iandavis.com in preference to those from jenitennison.com.

Another possibility is that you have a policy that you don’t accept the content of graphs from anything other than a parent directory of that graph.

What you do for your particular SPARQL endpoint will depend on why you’re pulling together these sources of information.

To be honest, if there is any way of passing around quads at all, I think you’re going to run into the “how do we combine graphs?” question. I don’t think that using N-Quads as the syntax for multi-graph RDF is going to mean that we avoid that question, it just means that we have to build tools that cope with two syntaxes rather than one.

Jeni

Re: Priorities for RDF

I have no objection to a standard dataset format for database dumps (I use N-Quads all the time), but like Richard I wouldn’t want it used as a publishing format.

# file <http://example.com/doc>
graph <urn:x:g1> { :a :p :b }

My simple question (and I think Richard’s) is: what happens when I load that?

(Now I must confess SPARQL doesn’t dictate what happens when loading a file, except in the PUT case, but the choices are fairly clear)

There’s nothing to stop you preserving provenance information in rdf currently:

# file <http://example.com/doc>
<> a foaf:Document ; dc:source 
   ... some tale about how this came to be ...

If you do want to provide unasserted information (quoted, for example) I think separate files are somewhat simpler. I guess you could use an envelope document containing multiple rdf snippets (file#frag1, file#frag2) to similar effect. Datasets in a file I find problematic.

Re: Priorities for RDF

Thanks for the name checks throughout Jeni, and good thoughts, very much in-line with my own.

standardising (something like) TriG — Turtle plus named graphs why not amord in rdf, turtle+graph literals?

standardising an API for the RDF data model +1 from me, already working on it to some extent w/ RDFa API, there’s a pure RDF interfaces, untangled, level 1 api for the RDF data model coming up, this week at some point, which will handle interop between libraries and extensions, but it’s no (non advanced) end user API.

standardising a path language for RDF that can be used by that API and others for easy access yes. definitely! forget the query languages, a simple “RDF Selectors” language is what we need. On this note, I see the x* type example you specified: graph.find(“*[foaf:nick = ‘web3r’]/foaf:name”) - I actually did some work on this myself using N3 paths as the basis, and found that you could easily instead write: ‘“webr3”!foaf:nick.foaf:name’ to achieve the same results, and with some light maps this could easily just be “webr3”!nick.name - or even swap for arrows “webr3”<-nick->name, or brace it up (nick->”webr3”)->name - there’s definitely a lot of scope on the selectors side. +1 to getting some people on to it, asap.

“having multiple syntaxes makes adoption harder” +1 again, you know my thoughts, turtle + graph literals more than does the job, imho - we all turn to it at first point of call anyway.

As for your summary, +1 with the slight discrepency over turtle+graph-literals vs trig.

Best,

Nathan

Re: Priorities for RDF

Of course, any standard API is only interesting if it gets deployed. I was much taken with ECMAScript for XML when it first came out but it hasn’t been taken up by enough browsers to be practically useful. The big question is how to make sure that RDF is a sufficiently high priority for people that it gets deployed. I fear another of those chicken and egg situations.

Re: Priorities for RDF

That’s absolutely right, although I don’t think that native support within a browser is an absolute necessity for RDF processing. It’s OK, perhaps even preferable, to have libraries. As I understand it, ECMAScript for XML is a bit different in that it changes the ECMAScript syntax to get closer XML integration, and the parsing of the script really has to be done natively by the browser.

What concerns me in terms of adoption is whether the RDF API work that is already happening within the W3C is engaging with and will be adopted by the people who are responsible for existing RDF libraries. If it doesn’t, then (to mix metaphors) it’s a dead duck with a W3C seal and we don’t need any more of those in the SemWeb space.

Re: Priorities for RDF

The neat thing about E4X is how well it integrates with JavaScript’s object notation. That would be difficult to achieve with a library, I think. On the other hand something at the somewhat less ambitious level of jQuery would go a long way and, as you say, have the advantage of portability.

Re: Priorities for RDF

Where can I get JQuery and Javascript for this RDF? I used the old version and now it has some bugs, anyone can give suggestion?

Re: Priorities for RDF

I think you may check out JQuery website for new update.or you may Google for some suggestion.

Re: Priorities for RDF

Lots of good thoughts - thanks for posting.

I would say that a key problem for RDF right now is the lack network semantics; the read/write/query options available for each response. To resolve this, instead of trying to standardize an API, it would be much better to standardize in-document (response) elements that carry the read/write/query options available.

RDF need not match well, to programming languages; they come and go anyway. RDF needs to have a good match to HTTP-style client-server interactions where the message (like HTML) carries not just the data, but also the network semantics (e.g. a search FORM, links to related content, and a FORM for adding/editing data on the server). RDFa is one possible way to solve this problem.

Until RDF has a solid network semantic solution, adoption will be slow and limited.

Re: Priorities for RDF

nice post!! thanks for sharing!!

Re: Priorities for RDF

yarh! in my point of view, The big question is how to make sure that RDF is a sufficiently high priority for people that it gets deployed. I fear another of those chicken and egg situations.

FhNVfapqigRQVZvweJu

Your article was excleelnt and erudite.