URNs as IRIs / identifiers

We’re building a content management app that lets users write and create new content and store it in their solid pod. We’re plannign to rely heavily on SKOS:Concepts as the underlying data format, but we’re running into some thorny issues with identifiers, and wanted to see what you all thought about the approach we are considering.

In this post on different IRI formats, the author mentions URNs, which are an interesting alternative to URLs for IRIs, since they serve as location-independent static identifiers. Has anyone used URN based IRIs before? Do you recommend it?

It seems to be encouraged / supported in the spec, at least based on this SPARQL doc: SPARQL 1.1 Query Language, though the Inrupt client libraries all expect a url parameter. I assume URNs are still valid, even though they are not actually URLs?

Yep, totally valid! URLs are the common use case, hence the name, but you can absolutely pass in URNs to the *Url functions. That said, Solid doesn’t mandate SPAQRL, so that doc is not something to draw conclusions from about Solid.

Whether it’s recommended: hard to tell, as it’s not clear what thorny issues you’re running into. Technically, URLs don’t necessarily need to be stored at the location they’re identifying either, so in that sense they’re location-independent as well.