<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="/feed.php">
        <title>Documentation Center public:dson_spec:format_description:asset_addressing</title>
        <description></description>
        <link>/</link>
        <image rdf:resource="/lib/tpl/dazdoccenter/images/favicon.ico" />
       <dc:date>2026-04-22T22:37:32+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="/public/dson_spec/format_description/asset_addressing/start"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="/lib/tpl/dazdoccenter/images/favicon.ico">
        <title>Documentation Center</title>
        <link>/</link>
        <url>/lib/tpl/dazdoccenter/images/favicon.ico</url>
    </image>
    <item rdf:about="/public/dson_spec/format_description/asset_addressing/start">
        <dc:format>text/html</dc:format>
        <dc:date>2012-07-16T09:21:24+00:00</dc:date>
        <title>Asset Addressing</title>
        <link>/public/dson_spec/format_description/asset_addressing/start</link>
        <description>
&lt;h1 id=&quot;asset_addressing&quot;&gt;Asset Addressing&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Many &lt;abbr title=&quot;DAZ Scene Object Notation&quot;&gt;DSON&lt;/abbr&gt; objects have an &lt;em&gt;id&lt;/em&gt; property. These objects can be addressed using the Uniform Resource Identifier (&lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;) fragment identifier notation.
&lt;/p&gt;

&lt;p&gt;
The syntax of URIs is defined in the Internet Engineering Task Force (IETF) document &lt;a href=&quot;http://www.ietf.org/rfc/rfc3986.txt&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.ietf.org/rfc/rfc3986.txt&quot; rel=&quot;nofollow noopener&quot;&gt;RFC 3986&lt;/a&gt; - “Uniform Resource Identifier (&lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;): Generic Syntax”.  It defines a &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; as consisting of five hierarchical parts: the scheme, authority, path, query, and fragment.
&lt;/p&gt;

&lt;p&gt;
The syntax is:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      URI         = scheme &amp;quot;:&amp;quot; hier-part [ &amp;quot;?&amp;quot; query ] [ &amp;quot;#&amp;quot; fragment ]

      hier-part   = &amp;quot;//&amp;quot; authority path-abempty
                  / path-absolute
                  / path-rootless
                  / path-empty&lt;/pre&gt;

&lt;p&gt;
The scheme and the hierarchy-part are required.  The hierarchy-part, however, can be an empty path.  &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; syntax requires that the hierarchical path name levels (such as directories) be separated with forward slashes (“/”) and that other special characters within the path be escaped, for example, converting spaces to their hexadecimal representation “%20”.  Entries are all considered case-sensitive.
&lt;/p&gt;

&lt;p&gt;
In the &lt;abbr title=&quot;DAZ Scene Object Notation&quot;&gt;DSON&lt;/abbr&gt; format, absolute path names (i.e. path names that begin with a leading “/”) are understood to be relative to the content root folder rather than being relative to a particular drive or file system root directory.  Absolute path names that include directories above the content root folder (e.g. “/C:/My Documents/My Content/Victoria/BaseMorphs.dsf”) are discouraged in the format to allow assets to be addressed within a contained content directory.  An absolute path that does not conform to the IETF convention must be adjusted to do so. For example, a Windows path “\foo\bar\my file#GirlMorph.dsf”, by &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; syntax definition, contains backslashes that could be treated the same as any other text character, not as valid separators. Although some applications look for Windows paths and convert them to valid URIs, not all applications do. Therefore, always use valid &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; syntax, which for this example would be “/foo/bar/my%20file%23GirlMorph.dsf”.
&lt;/p&gt;

&lt;p&gt;
Assets within a file are addressed using the fragment identifier (“#”).  In a &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; property, that is when an asset is to be looked up based on a &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;, the &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; fragment identifier is preceded with the literal pound sign or hash character (“#”).  When defining the &lt;em&gt;id&lt;/em&gt; for an asset, no hash symbol is used, and the &lt;em&gt;id&lt;/em&gt; should not contain any path information, as this is derived from the file’s &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; in combination with the asset’s path within the *_library in the file.
&lt;/p&gt;

&lt;p&gt;
Whenever possible, it is better encoding practice to use paths that are relative to the location of the document that references them rather than to use absolute paths.
&lt;/p&gt;

&lt;p&gt;
All &lt;em&gt;id&lt;/em&gt; values within a given file must be unique, regardless of what &lt;a href=&quot;/public/dson_spec/object_definitions/start&quot; class=&quot;wikilink1&quot; title=&quot;public:dson_spec:object_definitions:start&quot;&gt;Object Definitions&lt;/a&gt; they are part of.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&quot;uri_schemes&quot;&gt;URI Schemes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
A &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; may be preceded by one of two named schemes to indicate whether the instance reference (see below) is stated in ID’s or in names. The two legal schemes are &lt;em&gt;id&lt;/em&gt; and &lt;em&gt;name&lt;/em&gt;. An &lt;em&gt;id&lt;/em&gt; scheme means that the object reference uses ID’s (&lt;em&gt;id&lt;/em&gt; attribute) for each component of the path.  A &lt;em&gt;name&lt;/em&gt; scheme means that each component in the path uses a (potentially non-unique) name (&lt;em&gt;name&lt;/em&gt; attribute).  If no scheme is given, &lt;em&gt;id&lt;/em&gt; is assumed.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&quot;object_references&quot;&gt;Object References&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Many elements need to refer to other objects that may or may not already be in the scene when attempting to load a file.  In the &lt;em&gt;scene&lt;/em&gt; element, the ordering of nodes, modifiers, geometries, materials, formulas, and settings is important because it allows a scene to be built up as a parser traverses each of these elements in order.
&lt;/p&gt;

&lt;p&gt;
An object reference is composed using &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; syntax where the root &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; is the node path within the scene along with an optional object type selector, and the query string selects what asset on the node to select.  The segment selector determines what property of the asset to address.  An optional sub-property selector can be appended to select a sub-component of the property.
&lt;/p&gt;

&lt;p&gt;
[&amp;lt;scheme&amp;gt;:/]&amp;lt;node_path&amp;gt;:&amp;lt;file_path&amp;gt;#&amp;lt;asset_id&amp;gt;[?&amp;lt;property_path&amp;gt;]
&lt;/p&gt;

&lt;p&gt;
A property that is associated with the named asset can be selected using a property path (e.g. to select the x component of the translation property) (see below).
&lt;/p&gt;

&lt;/div&gt;

&lt;h3 id=&quot;example&quot;&gt;Example&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;hips:morphs/Daphne#daphne?value&amp;quot;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;  scheme      file_path      property_path
   _|_       _____|_____          _|_
  /   \     /           \        /   \
       hips:morphs/Daphne#daphne?value
       \__/               \____/
         |                   |
     node_path           asset_id&lt;/pre&gt;

&lt;p&gt;
This &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; searches on the “hips” node first, to locate the asset with the &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; “morphs/Daphne#daphne”.  The modifier ‘daphne’ is selected, and the property on ‘daphne’ named ‘value’ is selected.  If a matching element in the scene is not found, the asset “morphs/Daphne#daphne” is loaded from file.
&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&quot;instance_references&quot;&gt;Instance References&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Within a file there are many places where object references appear.  Object references may refer to items that exist within a scene, asset definitions within the current file or another file, or asset instances within the current file.  Asset instance references may only be used to refer to instances within the same file (i.e. instances created in the scene element of the file).  Since asset instance references only refer to instances within the file, they should all begin with a ‘#’.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3 id=&quot;node_path&quot;&gt;Node Path&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
A node path is the full or partial path to a node in the scene.  If the path starts with a leading slash (‘/’), searching begins at the scene root node(s).  The presence of a slash (‘/’) tells the search algorithm to look for any descendent of a node using a breadth-first search.  For example, for the path ‘/hips/rfoot’ the search algorithm should start searching at the scene root node ‘hips’, then find the first descendent of ‘hips’ with the id ‘rfoot’.
&lt;/p&gt;

&lt;p&gt;
If the node path does not begin with a leading slash, but rather starts with the &lt;em&gt;@selection&lt;/em&gt; tag, then the application should search within the current scene selection scope first to locate the first node or modifier in the path. If not found in selection scope, then continue the search with all root nodes in the scene, traversing the node hierarchy until the top-level node in the path is found.  Path search should follow normally from there.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;example1&quot;&gt;Example&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;/scene/rfoot:figures/Victor#rfoot?translation&amp;quot;&lt;/pre&gt;

&lt;p&gt;
This path starts at the scene root and looks for the first node instance named ‘rfoot’.  Once located, it selects the property on ‘rfoot’ named ‘translation’.  If the node does not exist in the scene, the application can choose to halt loading, or it can retrieve “figures/Victor#rfoot” from file.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;hips:figures/Daphne#iliac_crest?value&amp;quot;&lt;/pre&gt;

&lt;p&gt;
This path selects the first instance of ‘hips’ found by first traversing the current selection context, then by traversing the scene.  The modifier ‘iliac_crest’ is selected if found, and its property named ‘value’ is selected.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3 id=&quot;property_path&quot;&gt;Property Path&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
A property path is a slash (‘/’)-delimited path that allows selection of sub-components of assets.  It follows similar rules to Node Paths in that a slash (‘/’) may be used to request a search of all descendent properties and sub-properties rather than specifying every parent property in the property hierarchy.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;example2&quot;&gt;Example&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;lhand/ball: props/SportsBalls#baseball_mat?materials/stitches/color&amp;quot;&lt;/pre&gt;

&lt;p&gt;
This &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; locates the asset “props/SportsBalls#baseball_mat” (which happens to be a material) either in the scene (by searching on the lhand/ball node) or through its file reference.  It then selects the property “materials” then searches for the “stitches” sub-property that is directly owned by the “materials” property.  Once the “stitches” sub-property (which in practice would likely be a material instance in the scene) is located, all of its sub-properties would be searched to locate a “color” sub-property.  Only the first instance encountered would be selected.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3 id=&quot;channel_naming&quot;&gt;Channel Naming&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Most channels may be named arbitrarily, but channels that deal with transform information must be named according to the transform axis that they relate to.  “x”, “y”, and “z” are the channel names that must be used for any transform channel that has an axis dependency.
&lt;/p&gt;

&lt;/div&gt;
</description>
    </item>
</rdf:RDF>
