- From: Nathan <nathan@webr3.org>
- Date: Mon, 01 Nov 2010 12:30:07 +0000
- To: RDFA Working Group <public-rdfa-wg@w3.org>
Hi All, I'm aware that with all the open issues and conversations etc around the API that it's getting a bit confusing, thus here's a combined IDL from all proposals, issues, comments etc and I guess how I'm personally seeing the API at the minute should all issues be resolved in line with this: interface RDFNode { readonly attribute stringifier DOMString value; DOMString nodeType(); boolean equals( in RDFNode otherNode ); DOMString toNT(); }; interface RDFResource : RDFNode { }; interface BlankNode : RDFResource { }; interface IRI : RDFResource { }; interface PlainLiteral : RDFNode { readonly attribute DOMString language; }; interface TypedLiteral : RDFNode { readonly attribute IRI type; }; interface RDFTriple { readonly attribute RDFResource subject; readonly attribute IRI property; readonly attribute RDFNode object; stringifier DOMString toString(); }; interface RDFGraph { readonly attribute unsigned long length; RDFTriple get (in unsigned long index); void add (in RDFTriple triple); sequence<RDFTriple> toArray(); boolean some(in RDFTripleFilter callback); boolean every(in RDFTripleFilter callback); DataStore filter (in RDFTripleFilter filter); void forEach (in RDFTripleCallback callback); // one of the following two void merge(in RDFGraph graph); RDFGraph merge(in RDFGraph graph); // optional DataIterator iterator(); }; [Callback] interface RDFTripleCallback { void run (in RDFTriple triple, in optional unsigned long index, in optional RDFGraph graph); }; [Callback] interface RDFTripleFilter { boolean match (in RDFTriple triple, in optional unsigned long index, in optional RDFGraph graph); }; // Data Interfaces interface DataContext { void setMapping (in DOMString prefix, in DOMString iri); IRI resolveCurie (in DOMString curie); void registerTypeConversion (in DOMString iri, in TypedLiteralConverter converter); any convertTypedLiteral( in TypedLiteral typedliteral ); // returns the TypedLiteral on failure, no exceptions IRI createIRI (in DOMString iri); // iri or curie PlainLiteral createPlainLiteral (in DOMString value, in optional DOMString language); TypedLiteral createTypedLiteral (in any value, in optional DOMString type); // value can be a js type 123, true, new Date() etc BlankNode createBlankNode (); RDFTriple createTriple (in any subject, in any property, in any object); // see note below RDFGraph createGraph (in optional sequence<RDFTriple> triples); // optionaly throw in an array of triples, counterpart of RDFGraph.toArray }; createTriple note: subject can be RDFResource or string curie, string blank node or string IRI predicate can be IRI or string curie/iri object can be RDFNode, string bnode/curie/iri, native js value or a string plain literal [Callback] interface TypedLiteralConverter { any convert (in DOMString value, in IRI inputType); }; [Constructor(in DataContext context)] interface DataParser { boolean parse (in any toparse, ParserCallback callback, in optional RDFTripleCallback filter, in optional RDFGraph graph); // note below boolean process (in any toparse, in DataProcessor processor, in optional RDFTripleCallback filter); }; parse note: setting the second param to a ParserCallback (below) ensures the API is async by default, if no graph is passed in (as fourth param) then a new graph is created, if graph is provided and callback is null then API flips in to sync mode (after parse completed graph is populated with triples from default graph after processing) [Callback] interface ParserCallback { void run(in RDFGraph graph); }; [Callback] interface DataProcessor { void process (RDFTriple triple); }; [Constructor(in DataContext context)] interface DataSerializer { boolean serialize (in RDFGraph graph); }; [Constructor(in DataContext context)] interface GraphQuery { boolean select (in DOMString query, in RDFGraph graph); }; Unsure of the definition of the following interfaces or whether they should be part of the RDFa API or done under the banner of the (optional) RDF TripleStore API: interface DataStore { ?? }; interface DataStoreQuery { ?? }; also unsure about the definition / need for DocumentData: interface DocumentData { ?? } Best and hope that helps in some way, Nathan
Received on Monday, 1 November 2010 12:30:53 UTC