On Jan 16, 2018 10:07 AM, "Richard Light" <rich...@light.demon.co.uk> wrote:
I think the principle is valid, but rdfs:label is a property, not a class, so I think that "rdfs:label" should be replaced by "rdf:literal" (or possibly "rdf:plainLiteral"[1]) in the above text. The point I assume that Martin is making is that the value of a *P1_is_identified_by *property can be finessed into a string if you have nothing more interesting to say about that value. Some brief RDF / RDFS / OWL notes: 1: The IRI rdf:Literal refers to the set of all possible concrete data values (e.g. - the real number [1] - the floating point value [1] - the temperature [1°C] - the string (sequence of characters) ['o','n','e'], or ['1'] - a string with an associated natural language tag [<["one"] , ["en"]>] or [<["one"], ["de"]>] - the English word [*one*] It is the top datatype in OWL, and can be used to restrict a property's range in rdfs; however it is usually possible to specify a more precise type. 2: RDF 1.1 removed the concept of Plain Literals (which were literals in an RDF document that had no specified datatype, and which may or may not have a language tag). The type rdf:PlainLiteral was introduced by the OWL working group (at a time when there was no RDF working group), which was mostly ignored when the RDF 1.1 working group was formed. RDF 1.1 added a new datatype, rdf:langString, which (sort of) denotes the set of all strings with an associated language tag. A langString MUST have a non-empty language tag. PlainLiteral can be approximated as the union of xsd:string and rdf:langString. The values of langString (and appropriate subset of PlainLiteral) are pairs of strings; there is an extra level of interpretation required to turn them into natural language utterances, but this can be as simple as displaying the string to a user. There need not be a valid interpretation (e.g. the string may not correspond to an utterance in the indicated language). If the range of a property is intended to be interpretable as natural language utterances then langString (or a defined OWL datatype restricting PlainLiteral to have a non-empty language tag) is usually a good choice. If a property has string values that do not correspond to a natural language utterance, then using a range of xsd:string is appropriate. If a property can have values which are strings that may or may not have language tags, then PlainLiteral may be appropriate; however this does not distinguish between strings in an unknown or unspecified natural language, and strings which are Just Strings. In situations like this it may be useful to define objects to serve as value holders. Doing so can also allow for more detailed restrictions in OWL (e.g. requiring the preferred label for a Concept in a given KOS to be unique for a given language). 3: rdfs:label is an annotation property, which means that it should be used to add metadata describing things in an ontology document, rather than the things the ontology is about. As a consequence of this, any rdfs:label assertions are completely ignored by OWL direct semantics ; there are only three axioms that can be used when defining annotation properties (subproperty, domain, and range). Even these are invisible to a direct semantics reasoner (though they can be used by editors and other tools). 4: Simple Literals... orz