<div dir="ltr">It appears, according to the grammar of IRIs:<div><br></div><div><a href="https://datatracker.ietf.org/doc/html/rfc3987#section-2.2">RFC 3987 - Internationalized Resource Identifiers (IRIs)</a></div><div><br>that URNs, like:</div><div><br></div><div>urn:web3d:media:textures/panoramas/horizon_3_back.jpg</div><div><br></div><div>Are NOT legal IRI references, at least according to <a href="https://www.npmjs.com/package/ajv-formats-draft2019">ajv-formats-draft2019 - npm</a></div><div><br></div><div>Which is really confusing, because I thought URNs were IRIs, just like URNs are URIs.</div><div><br></div><div>I am going with IRIs and IRI references, because some IRIs include emojis, which the IRI grammar handles, last I checked.   I don't think URIs include emojis.</div><div><br></div><div>For further reference, here is the URN specification:</div><div><br></div><div><a href="https://www.rfc-editor.org/rfc/rfc8141#section-2">RFC 8141: Uniform Resource Names (URNs)</a></div><div><br></div><div>So while the scheme is "urn"  there is no NID or NSS appearing in the IRI grammar.</div><div><br></div><div>So how can I validate URN strings with JSON schema?</div><div><br></div><div> Am I the first one to notice this?</div><div><br></div><div>Google AI says, use this in your JSON schema:</div><div><br></div><div><span style="background-color:rgb(255,255,255)"><font color="#000000"><span style="font-family:monospace;font-size:14px;white-space:pre"> {</span><br aria-hidden="true" style="font-family:monospace;font-size:14px;white-space:pre"><span style="font-family:monospace;font-size:14px;white-space:pre">      </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"type"</span><span style="font-family:monospace;font-size:14px;white-space:pre">: </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"string"</span><span style="font-family:monospace;font-size:14px;white-space:pre">,</span><br aria-hidden="true" style="font-family:monospace;font-size:14px;white-space:pre"><span style="font-family:monospace;font-size:14px;white-space:pre">      </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"format"</span><span style="font-family:monospace;font-size:14px;white-space:pre">: </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"uri"</span><span style="font-family:monospace;font-size:14px;white-space:pre">,</span><br aria-hidden="true" style="font-family:monospace;font-size:14px;white-space:pre"><span style="font-family:monospace;font-size:14px;white-space:pre">      </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"pattern"</span><span style="font-family:monospace;font-size:14px;white-space:pre">: </span><span class="gmail-rQeGvc" style="font-family:monospace;font-size:14px;white-space:pre">"^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"</span><br aria-hidden="true" style="font-family:monospace;font-size:14px;white-space:pre"><span style="font-family:monospace;font-size:14px;white-space:pre">    }</span></font></span></div><div><span style="background-color:rgb(255,255,255)"><font color="#000000"><span style="font-family:monospace;font-size:14px;white-space:pre"><br></span></font></span></div><div><span style="background-color:rgb(255,255,255)"><font color="#000000"><span style="font-family:monospace;font-size:14px;white-space:pre"><br></span></font></span></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre">I guess I can use a "oneOf" superschema, to include both this uri format, and the normal iri-reference format.</span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre">Does X3D have a collection of patterns for URNs?</span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre">Thanks!</span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre">Maybe I solved my problem?</span></font></div><div><font color="#000000" face="monospace"><span style="font-size:14px;white-space:pre"><br></span></font></div><div>John</div></div>