
Hi Jeroen/All; Just one note before I address your comments - remember that this is only an example and wasn't meant to reflect the current reality of talks on specific items or interactions. It really should not be used "as is". On 8/31/11 5:19 AM, thus spake Jeroen van der Ham:
On 30 Aug 2011, at 19:00, Jason Zurawski wrote:
See the following minor chunk of (unverified/unchecked) schema:
namespace nml = "http://ogf.org/schema/nml/base/20110830/"
NMLRelation = element nml:relation { ( attribute type { "specifictype1" }& NMLLink& NMLLink ) |
This definition doesn't seem to incorporate directionality, right?
No, its several lines if schema I wrote, from memory, didn't check via automated tools, and probably won't save anywhere, to make a simple point.
Or is this meant as a relation element that specifically takes a list of only two elements as argument?
Yes, its a minimalist way to get some semantics into the syntactic checking step. I have never had to do this before, so I am sure it could have been done in different ways. YMMV.
Thinking about how we now define lists in a very implicit way, it seems to leave a lot of room for error in interpretation.
My point exactly - semantic checking is best handled by other means, not the syntax parser.
Once you have a relation, and their targets, the interpreter has to explicitly check how many arguments there are. If more than two, you have to check both for a "next" relation and make sure one points to the other.
It can be done this way, it is much harder and doesn't gain you much in my opinion.
Also, this way of defining lists makes it near impossible to extend this to lists within lists in the future.
I can't say, I haven't tried. I leave that as an exercise for others who really want to see this idea pursued. I stand by my earlier statements that semantic checking in the code is much more efficient than something along these lines. Thanks; -jason