Issues review
Issue 100A
"extension functions"
http://lists.fourthought.com/pipermail/versa/2005-September/000116.html
Issue 100F
http://copia.ogbuji.net/files/Versa-Issues.html#100F
Proposal: replace (! ... ) with Javascript-like define
So from:
distribute([1,2],(! x : string($x)), (! x : number($x)), (! x, y=4 : boolean($y)))
to:
distribute([1,2], define x : string($x), define x : number($x), define x, y=4 : boolean($y))
Issue 1009
http://copia.ogbuji.net/files/Versa-Issues.html#1009
Updated link: "Issue 100A proposal, extension functions"
Issue 1007
http://copia.ogbuji.net/files/Versa-Issues.html#1007
- Stick to the functions for list manip: member, item, rest, tail, and slice, etc. and wait on new syntax for a while
Issue 1001 & Issue 100D
- DEFERRED. We won't try to solve named subgraphs in Versa 2.0
Other Notes / Issues
Using ground to evaluate terms, the initial thread
DaveW: Where RDF's power could really shine is in allowing RESTful query of dynamic information spaces, which will eventually require us to crack this nut.
Issue 1007
Lessons from iTQL
iTQL has following features that users really like, which are not in SPARQL:
- Naming graphs. An iTQL model is a named graph. You can create a new graph, fill it with an insert, and update that back to a model.
- Ability to walk a graph (iTQL with Like predicates)
- Transitive closure
- Negation - they agonized over it because of potential DoS and other efficiency concerns
Extra nice-to-haves
- Syntactic sugar to optimize use of human-readability (e.g. for easy access to RDF labels, some level of vocab description more than rdf:label and less than OWL Lite. Roundabout OWL Tiny, but baked into the language). Idea is to be able to operate on higher-level constructs rather than triple twiddling.
Random notes on Versa
Do we need filter traversals?
To get all resources with a label of "Spam", Versa 1.0 supports:
all() |- rdfs:label -> eq("Spam")This can also be written
filter(all(), 'eq("Spam")')In Versa 2.0 perhaps the top version should be eliminated. The second version becomes:
filter(all(), function: . - rdfs:label -> eq("Spam"))That might be too verbose and maybe a better general bit of syntactic sugar is something like:
A | B, meaning set or list A, filtered by criterion B, so:
all() | rdfs:label() | eq("Spam")OK, now that I've worked that far, I think it's hard to claim much gain
. Well, the main gain is congruity. There is now a simple filter pattern that can be used in a variety
