Version 1 (modified by jbourne, 16 years ago)

--

ISO 15926 in OWL: Conventional Literals

The proposal for dealing with ISO 15926 literals in OWL (at time of writing) involves creating a "wrapper" object for the literal instantiated from its ISO 15926 class - the literal itself is linked to this as the object of an RDF relationship via a "content" predicate. Moreover, the literal object must have an identifier and must be unique within the RDF graph.

This page argues against that construction for the external OWL as used for a publishing format in RDS/WIP and for façades (SPARQL endpoints for interoperability), primarily on performance and security grounds. Rather, it argues that traditional RDF literals should be used here, and the (few) shortcomings resolved in other ways. At the very least it argues that if literal objects are retained, that they be represented as blank nodes and that the uniqueness constraint is removed for use in triple-stores.

Original ISO 15926 Literals in OWL

In the original ISO 15926 literal proposition, a new object is instantiated for a string, so that the instance (class actually, not individual) can be used as the target of properties in a template instance:

<mysite:myTemplate rdf:ID="TPLI23432">

<mysite:nameProperty rdf:resource"#XSST_12345"/> ...

</mysite:myTemplate>

<part4:XmlSchemaString rdf:ID="XSST_12345">

<part2:content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello, world!</part2:content>

</part4:XmlSchemaString>

The main structural advantage this provides is that it allows literals to be the subject of an RDF statement (not that they are actually used that way when a template is involved). It would also allow an extremely naïve RDF client to identify a common XML schema type for the literal content: however, note that more sophisticated clients could easily resolve an ISO 15926 class definition to find the XML schema type (which will be necessary anyway if someone introduces, for example, a floating point representation with a different binary mantissa and exponent precision to those currently supported by XML schema).

From an ISO 15926 part 2 point of view, its also correct, so long as there is only one instantiated string object in the data set that has the same data type, language and text.

Conventional RDF Literals in OWL

What I would propose is that for the external format at least (that intended to be supported by façades for interoperability scenarios similar to those where you might use an service-oriented-architecture (SOA) solution), it is better to use conventional RDF literals, like this:

<mysite:myTemplate rdf:ID="TPLI23432">

<mysite:nameProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello, world!</mysite:nameProperty> ...

</mysite:myTemplate>

The reasoning for this is long, arduous and complicated, but I think ultimately sound, so long as the goal is performance and security. At the very least, if that cannot be accepted, then I would present this:

<mysite:myTemplate rdf:ID="TPLI23432">

<mysite:nameProperty>

<part4:XmlSchemaString rdf:ID="XSST_12345">

<part2:content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello, world!</part2:content>

</part4:XmlSchemaString> ...

</mysite:nameProperty>

</mysite:myTemplate>

making the string into a blank node and obviating the requirement for uniqueness. I'll present the reasoning step by step shortly ...

Home
About PCA
Reference Data Services
Projects
Workgroups