Use backticks to demarcate resource IDs

Description

SURF and TURF allow resource IDs to be indicated as labels. For example for the type bio-Species, an instance with an ID of quercusMacrocarpa can be indicated in TURF using bio-Species#quercusMacrocarpa; or in both SURF and TURF using an ID label as |"quercusMacrocarpa"|*bio-Species.

The current ID label representation is potentially confusing because "quercusMacrocarpa" is the string literal form, but no urf-String type is being indicated here. It would be preferable to indicate the lexical form completely separate from the type. We can do that using a backtick ` instead of a double quote. (This makes sense because nowadays a backtick is used to indicate "code", — usually a literal representation for later computer parsing.) Thus the above example becomes |`quercusMacrocarpa`|*bio-Species.

Note that the URF approach to IDs is coming close to the concept of "literals" in RDF. So where RDF would have a datatyped literal "123"^^xs:integer, the SURF/TURF representation would be |`123`|*urf-Integer. There are however a couple of important distinctions:

  • In RDF "123"^^xs:integer is a different thing from a normal resource in the model. In SURF/TURF |`123`|*urf-Integer represents the resource identified by the IRI https://urf.name/urf-Integer#123, which in TURF can also be represented as urf-Integer#123.

  • RDF has other literals called "plain literals" which, in addition to being something different from other resources, they have no type. (Yet somehow they are able to be identified and referenced across graphs, even with no type and URI identifier existing.) In URF, everything is a resource, and there is no lexical representation of anything that does not have a type.

This will also allow two additional possibilities in the future:

  • We may decide to allow typed IDs; that is, the ID is of urf-Integer type, for example. The usefulness of this is unclear, however, as things like relational databases might need multiple IDs and it would be better for them to have a special vocabulary for indicating primary keys and foreign keys.

  • In order to accommodate RDF graphs, we may at some point allow standalone lexical representations such as `foobar`. These would be equivalent to RDF plain literals, except that in the URF model they would implicitly be instances of rdf-Literal or some sort; that is, equivalent to rdf-Literal#foobar and |`foobar`|*rdf-Literal.

Environment

None

Assignee

Garret Wilson

Reporter

Garret Wilson

Labels

None

Components

Fix versions

Priority

Critical