schemaorg / suggestions-questions-brainstorming

Suggestions, questions, and brainstorming
20 stars 15 forks source link

identifier vs termCode on DefinedTerm #43

Open l00mi opened 4 years ago

l00mi commented 4 years ago

Some time back I asked in https://github.com/schemaorg/schemaorg/issues/1711 for something which became a DefinedTerm in a Project. (Thanks @RichardWallis and @philbarker for helping me with this.)

A colleague of mine now implemented a first datasets using DefinedTermSet and a set of DefinedTerms. Now he went ahead and used the property identifier for the codes these DefinedTerms provide. And I quickly argued we have termCode for this. But after reading the descriptions further I have problems to justify myself.

So first the question, how does termCode differ from identifier on a DefinedTerm?

Second would it make sense to move codeValue to become sub-property of identifier and remove termCode?

RichardWallis commented 4 years ago

So first the question, how does termCode differ from identifier on a DefinedTerm?

By very little. - The introduction of DefinedTerm and identifier took place separately but at a similar time without taking account of each other..

Making termCode, and possibly codeValue sub-properties of identifier makes sense to me.

Without details on how DefinedTerm, CategoryCode, termCode, and codeValue have been used in the wild, I am not so sure on rationalising termCode and codeValue into one property.

l00mi commented 4 years ago

Be rereading once more the two descriptions I came up with this statement:

The property termCode is used over identifier in the case that the identifying string is defined inside the context of the DefinedTermSet. (In contrast to identifier where the context is defined by an external authority like ISBN, GTIN ..)

Would you say this is correct?

I guess the codeValue as sub-property of termCode is also purely historical? Or is there a defining difference between the two?

philbarker commented 4 years ago

Hi @l00mi, that sounds about right, at least in terms of scope: identifier can be used on anything; termCode is only relevant to things in defined term sets (e.g. controlled vocabularies). However, termCodes and DefinedTermSets (and by extension classification codes) can be defined by external authorities (LoC, IETF, ISO).

As @RichardWallis says, there is overlap because they arose at similar times in response to what seemed to be independent use cases. One difference between termCode and identifier is the range. I would not like to see PropertyValue used for termCode. There may be cases where it is useful to use the identifier property for a DefinedTerm in order to provide the URI (though I would normally prefer @id, or its RDFa equivalent, for this).

RichardWallis commented 4 years ago

See issue #7 for the context of the move from the main Schema.org issue tracker to this repository.