I've made a repository for the "Official GML Spec" to track of edits while I bring it up to speed:
http://github.com/jamiew/gml-spec
Will announce on this list when we update anything for further peer review.
Thx for the heads up, you guys rock
-jamie
> --
> -~-~-~-~-~-~>
> GML Mailing List: http://groups.google.com/group/graffiti-markup-language
> Unsubscribe: graffiti-markup-la...@googlegroups.com
Nice to have you on the list and thanks for all the thoughts.
The initial spec was bucket chemistry of sorts so its great to have more eyes on it.
in case you didn't have it this is where we our hashing out the spec
http://piratepad.net/1qjj2eT9Ol
I think some stuff has changed compared to the one on the main site and the main thing being discussed but maybe resolved now is whether the normalized coords should be relative to each other or lose their relative ratios when normalised. You can see a bit of the discussion on the piratepad and also in the pasted thread at the end of my response. Would be interesting to have your thoughts on this matter too.
replies:
> <Client> node:
>
> 1) What is the role and use case(s) for the data stored in the
> <client> node? In my imagination, I'd understand a client to be a
> consumer of GML data (e.g. the Obama playa) and if this is so, why
> would we need to store its IP, geoloc etc.? The semantics of those
> bits in the example documents seem to more indicate the actual
> authorship info and references to the tool used to generate the GML,
> no?
Actually for the most part the client actually is more like content creator or software used to capture the tag.
So this is more in line with 'clients' like Laser Tag, Graffiti Analysis, Fat Tag, Web Marker etc
Having geoloc is nice to be able to say "show me all of the tags recorded within 100 miles of Paris" for example.
> 2) What is the difference between the <permalink> & <uniqueKey> nodes?
> A permalink URL is by definition a unique identifier, why need the
> other? And what format is the uniqueKey supposed to take? It certainly
> doesn't look like GUID (http://en.wikipedia.org/wiki/GUID) or URI -
> using the latter would be much preferable, especially if your aiming
> at the linked data web...
Permalink is actually the link to the tag on 000000book.com eg: http://000000book.com/data/20542
uniqueKey is a key that identifies a particular device or user for the actual software that is capturing the app. eg: iPhone hardware id or a computers ethernet address.
because the uniqueKey can be in lots of different formats it is seen to be a string which can then get hashed server side if needed.
> 3) Why are keywords comma separated and not specified as multiple
> <keyword> nodes, which would allow parsing them into a list structure
> directly and generating the XML from a database easier too?
Good point! :)
> 4) What scope is the <username> value supposed to be valid under? Why
> not use the artist's home URL, email address (or SHA1 of the email for
> privacy reasons)? E.g. See FOAF for inspiration:
> http://xmlns.com/foaf/spec/#term_mbox_sha1sum - Is GML designed to
> have a direct dependency on 000000book.com?
This is a good point - prob be better to generalise it.
With something like
<site>
<domain>000000book.com</domain
<username>theo</username>
</site>
> 5) I'm aware it's easiest to express times in openFrameworks as *nix
> timestamp, but I would still propose to rather change this to a more
> human friendly format,
Is anyone using the timestamp data at the moment? Could be an easy change?
Or even something that is done on upload?
> <Environment> node:
>
> 1) Which of the 2 nodes refers to the tag's centroid: <offset> or
> <origin>? Here I'd propose to also include (or replace one of them
> with) a bounding rect/box node (in normalized coords) so that tags can
> be easier scaled & transformed around their bounding rect's centroid.
Neither :)
Idea was to have this stuff for the iPhone version of Rhonda ( http://rhondaforever.com/ )
<origin> was just meant to be where the world origin was.
<offset> was meant to be any offset or shift that the client wanted to store relative to the origin.
origin in a way is a little redundant but offset I think was meant to be like a gltranslate
a centroid tag and a boundingBox tag in normalized coords would be a good addition.
> 2) Why is the <layerAbsolute>/<layerRelative> a property of a brush
> and not of a <stroke> directly? It's the strokes which are/can be
> layered, no
Yup - should be changed.
> 3) Again, IMHO the <uniqueID> & <spec> values are semantic duplicates
> and I'd refactor the current <uniqueStyleID> node into a URI value
> with an option name attribute.
Cool please feel free to change it on the pirate pad as this is def rough at the moment.
> 4) Since all other values (coords, vectors) are normalized, why not
> keep the colors like this too? Would make it more OpenGL compatible
> too... You could also offer a "hex" attribute for 6-digit RGB values
> as optional alternative...
I am open in regards to this, esp as it isn't being used.
Nice thing about bytes is that it is much more readable due to lack of long floating point values.
but I would be interested to hear others thoughts.
> All GML documents I've seen so far only contain a single tag, so why
> have this superfluous <tag> childnode, if <gml> already is your root
> node? The <tag> would only make sense if you plan on introducing other
> top level elements and/or distributing several tags within one
> document (which would break REST principles). Also, for actually being
> truly valid XML you should include the <?xml version="1.0"?>
> processing instruction as first line...
Well the idea was that we may want to package up a collection of tags in one file.
I think there is still plans to do that, so I think it would be good to keep.
> truly valid XML you should include the <?xml version="1.0"?>
you mean <?gml version="1.0"?> ;)
> For existing documents the changes to an updated syntax
> could be easily automated using a simple XSLT batch process...
Yup that is the plan!
Thanks for all the questions and comments - actually there has been a little bit of discussion about the spec offlist ( by accident ) so I will paste the recent discussions below.
Cheers!
Theo
On 9 Sep 2010, at 21:58, Theo Watson wrote:
> Hi Jerome,
>
> It is solved as we will have screenBounds still be required.
>
> So.....
>
> for
> screenBounds is 1024, 768, 0.0
> screenScale is 1024 in this case.
>
> You have non square coords, ie points are:
>
> x 0-1.0
> y 0.0-0.75
> z 0.0-0.0
>
> 1024 * 1.0 = 1024
> 1024 * 0.75 = 768
> 1024 * 0.0 = 0.0
>
> So you don't actually need to know what the limits are in the normalised x, y and z coords all you need is the screenScale.
> If you need to know the max bounds allowed then you have screenBounds and from that you know which axis is longest and where the center of the screen is.
>
> So this solution should make everyone happy ??
>
>> You don't know what's the z axis ratio.
>
> well if screenBounds is 1024, 768, 200.0 then we know that z can go from 0.0 to 0.19
>
> ----------------------------------------------
> Theo Watson
> http://theowatson.com
> http://openframeworks.cc
> ----------------------------------------------
>
> On 9 Sep 2010, at 21:35, Jerome Saint-Clair wrote:
>
>> Hey heyyyy!!!
>>
>> Sorry guys, but this solution only partially solves this problem.
>> - You have no way to know the original screen ratio. OK, nearly SOLVED
>>
>> These ones remain.
>> - You don't know which axis is the longest one (what if it is z?).
>> - You are not able to know what's the center of the screen.
>> - No direct mapping with OSC, TUIO, (Wiimote?)
>>
>> Plus a new one:
>> You don't know what's the z axis ratio.
>>
>>
>> Jerome
>>
>> -----------------------------------------------------------------
>>
>>
>>
>> On Thu, Sep 9, 2010 at 8:29 PM, Jamie Wilkinson <ja...@jamiedubs.com> wrote:
>>
>> On Sep 9, 2010, at 10:53 AM, Golan Levin wrote:
>>
>> > -- The maximal dimension should go from 0....1.0
>> > -- The minimal dimension should go from 0.... 0.x, where 0 < x <= 1
>> > -- We should add a tag for the aspect ratio, 0.x:1.0, so that tags can be predictively sized without additional data traversal.
>> >
>> > Ummmmm....
>> > g
>>
>> This sounds cool to me I think. We could add an <aspectRatio> tag in addition to the new <boundingRect>
>>
>> Since that's only 1 more tag per file it seems cheap to include both, and easy to calculate when people don't include it.
>>
>> Like, aim to not force people to read & parse all the data before they can draw it correctly...
>
----------------------------------------------
Theo Watson
http://theowatson.com
http://openframeworks.cc
----------------------------------------------