gene wrote:But let's recall the concrete requirements:
A "TransliteratedString" ("TS") is a collection ob objects with:
- a text
- a script in which the text is written
- a language in which the text is written
- a region where this text is used
- a type (abbreviation, other?) Or is this only a property, let's call it "isAbbreviation yes/no"?
Does this count for all TSes?
Are some fields in some cases optional and in other cases not optional?
No, it's a little different. The region and the type are properties of the connection between the TS and the object.
Example (fictional):
We have a TS object with the primary data set:
text = "Diablo"
script = "Latin"
language = "Spanish"
We could add secondary data sets to this TS object:
text = "Teufel"
script = "Latin"
language = "German"
text = "Devil"
script = "Latin"
language = "English"
Then we link this TS to a game object with two additional properties:
"Diablo" ------> Game 1437 with (region = "North America" AND type ="Main title")
Let's assume there will be a console named "Diablo Gaming System" in the future. Then we could link this TS again:
"Diablo" ------> GamingEnvironment 112 with (region = "Worldwide" AND type ="Common short name")
Then, there may be a Spanish print magazine called "Diablo", so we link another time:
"Diablo" ------> Publication 65 with (region = "Spain" AND type ="Cover title")
See? The region and the type are in the link. So far, so good, but there is one problem:
Let's assume there is a German game called "Teufel", too. Then we IMHO cannot re-use the above TS by pointing to the German data set in it.
Instead, we would need to create another TS object with the primary data set
text = "Teufel"
script = "Latin"
language = "German"
and link this to the German game, then probably would add "Devil" and "Diablo" as secondary data sets to this new TS. That would be quite some data duplication, I suppose.