Question regarding URI format in DSON

I was hoping someone could help me out with a question regarding the formatting of URI's in the new DSON format:

As an experiment I saved a pose preset as a .duf file. As expected, there are animation entries for each parameter for each bone. The first one looks like this:

{
"url" : "name://@selection/lBigToe:?translation/x/value",
"keys" : [ [ 0, 0 ] ]
},

The "scheme" portion seems fine ("name://") However, I don't see how the rest of the string conforms to the documented specification. Following is the format provided in the specification for URI's (http://docs.daz3d.com/doku.php/public/dson_spec/format_description/asset_addressing/start)

The syntax is:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty

The given syntax suggests that in the example I provided, the portion "@selection/lBigToe" would be part of the scheme, which is clearly not correct. The specification document states that the "hier-part" can be an empty string, which seems to be the case in the example, but this still does not account for the "@selection/lBigToe" portion.

Unless I'm reading this wrong, I would have expected the colon after lBigToe to be omitted.

The URI string given can still be parsed, I just don't understand how it conforms to the specifications outlined in the documentation. Any help or explanation would be greatly appreciated.

Comments

  • rbtwhizrbtwhiz Posts: 2,179
    edited December 1969

    You have to keep reading beyond the first section. Granted, reading it again, we probably could polish the wording to make it more clear, but the information is there...

    The second colon is described in the DSON File Format Specification > Asset Addressing > Object References section.

    The @selection tag is described in the DSON File Format Specification > Asset Addressing > Instance References > Node Path section.

    -Rob

  • edited December 1969

    Beyond the first section, you say? No kidding. If I have questions about your product in the future I'll be sure to do the tactful thing and just keep my big mouth shut.

    I believe my confusion stemmed from the fact that in the first part of the document, it shows the query section (denoted by "?") occurring before fragments ("#"), just like in a normal URI. But in the Object References section (which I did read), we see the "#" symbol as part of the path, before the query. This reversal was what confused me.

  • rbtwhizrbtwhiz Posts: 2,179
    edited December 1969

    There really is no need for the snarky response. You asked a question, I provided an answer. Perhaps not the one you were looking for, but an answer nonetheless. I even went so far as to admit that the documentation could do for clarification, after having read it again... I agree that the documentation on order/placement of the # and ? symbols IS confusing. I've already fired off an email to the team (prior to my initial response) indicating that we need to discuss/clarify the Asset Addressing documentation on Monday morning (its Sunday evening here) and referenced this thread.

    Your first post does not indicate that you have read beyond the first section and I cannot simply assume you have, given the number of times I've been asked questions by those who seemingly have not read much beyond the first sentence on a page let alone the first section. Your first post indicates that you are confused by the existence of a second colon... which, as I pointed out in my initial response, is described just beyond the first section, in the Object References section on the same page you linked to. Perhaps you missed it or perhaps you thought it was a typo (both are easily possible), I don't know... but there are two colons in the structure example in that section...

    [:/]:#[?]
    ... and not because I've changed it (see the revisions for yourself). Your comments regarding the "@selection/lBigToe" portion being part of the scheme is what caused me to think you hadn't read the Object References section... either skimming past it (in the case that @selection is described in a different/later section) or not reading that far yet (in the case that @selection was intuitive to you).

    -Rob
  • Alessandro MastronardiAlessandro Mastronardi Posts: 2,593
    edited December 1969

    Hi Rob, I fail to see how to efficiently use the SDK to produce presets with the DSON format.
    I see no high level routines that would allow, for instance, to save a pose preset for a certain object available in the scene.
    I mean, do we have to procedurally build those files from scratch?

  • rbtwhizrbtwhiz Posts: 2,179
    edited December 1969

    Several examples are posted in the Scripting > API Reference > Samples > File Input/Output > Asset IO Save Filters section.

    -Rob

  • Alessandro MastronardiAlessandro Mastronardi Posts: 2,593
    edited September 2012

    rbtwhiz said:
    Several examples are posted in the Scripting > API Reference > Samples > File Input/Output > Asset IO Save Filters section.

    -Rob

    Rob, thank you very much. How come I missed that page, it's full of a ton of nice scripts!
    However, I've tried the Pose and also the Shape Preset Save scripts, and it seems like the instruction below is ineffective, because whe I run the script the output dialog is always showing up:

    oSettings.setBoolValue( "RunSilent", true );

    Post edited by Alessandro Mastronardi on
  • Alessandro MastronardiAlessandro Mastronardi Posts: 2,593
    edited December 1969

    Never mind Rob, after looking at the code more carefully, I noticed there was a var bShowOptions = false; which was overriding the RunSilent setting!

Sign In or Register to comment.