Re: Quick review of RDFa DOM API?

Hi Manu,

On May 1, 2010, at 08:03 , Manu Sporny wrote:
> This is a call to see if anyone from this WG can do a quick high-level
> review of the RDFa DOM API. We are planning a FPWD in a week or two and
> would like to see if what we have so far is a good start, makes sense to
> those unfamiliar with RDF/RDFa, and what improvements we should make in
> the coming months to make the API useful for developers. The latest
> (FPWD-ready) document is here:
> 
> http://www.w3.org/2010/02/rdfa/drafts/2010/WD-rdfa-dom-api-20100429/

Just a very quick review.

  - Why would anyone want to capture PlainLiteral values in a specific encoding? Since the value is provided as a DOMString, it should just be that — a string, with any original encoding information forgotten. Otherwise, you should use a binary type to capture the value (maybe a Blob) but I really don't see why.

  - element points to the "first node in the DOM tree that is associated with this PlainLiteral". I'm not sure what that means.

  - language is said to be a "two character language string as defined in [BCP47]". BCP47 has language codes that have more than two letters. Also, if the source language is not BCP47 conformant, is it exposed?

  - I'm not sure that I fully grasp the full value of the IRI interface. When TypedLiteral's type field returns an IRI, what is the IRI's element?

  - "xsd:DataTime" typo?

  - "Any valueOf ();" isn't it "any"? (It's not clear in WebIDL)

  - JS doesn't have a DateTime object, just a Date.

  - Constructing a triple seems painful:

     var trip = new RDFTriple(new IRI("http://foo..."), new IRI("http://bar..."), new IRI("http://dahut..."));

I can see why from the draft, but shortcuts would help. Or maybe it's a library thing.

  - forEach: you can either define it as receiving just "Function" so that it gets a function. That's fine, but it doesn't tell you what that function is called with. The other option is to have it receive a FooCallback object, which is in turn defined as an interface with a single method that has the signature you expect, and has [FunctionOnly, NoInterfaceObject].

  - any reason why RDFTripleList wouldn't stringify to a list of RDFTriples?

  - VERSION. Don't. API versioning doesn't work, in fact it doesn't exist.

  - I'm not sure that I understand the value of the "Convenient IRI Mapping". The intent that I understand is to have:

    rdfa.foo.bar # http://foo.com/ns#bar
    rdfa.dahut.hunting # http://dahutsgalore.org/vocabularies/hunting
    rdfa.dahut.unicorns # http://w3.org/2009/dap

It seems that the proposed solution is that you must first:

    rdfa.setMapping("foo", "bar", "http://foo.com/ns#bar");
    rdfa.setMapping("dahut", "hunting", "http://dahutsgalore.org/vocabularies/hunting");
    rdfa.setMapping("dahut", "unicorns", "http://w3.org/2009/dap");

What's the added value over:

   var myMap = { foo:   { bar: "http://foo.com/ns#bar" },
                 dahut: { hunting: "http://dahutsgalore.org/vocabularies/hunting",
                          unicorns: "http://w3.org/2009/dap" }};

?

-- 
Robin Berjon - http://berjon.com/

Received on Wednesday, 5 May 2010 13:06:31 UTC