Here’s an odd bug I recently stumbled across:
Start with a binary fact type such as "Account(id) has balance as of Date()", making the account role unique, add some notes (I used "binary notes") to the predicate via the database properties window, and drop the fact type out on to the page.
Then, select the predicate, right click, and select "Fact Editor…". If it isn’t already, set the input style to "Freeform" and amend the fact to read "[Account(id)] has balance of [Money Amount] as of [Date]" and click ok.
You’ll notice that Visio amended the fact to be a ternary and even made a guess (correct in this case) as to what the new uniqueness constraint should be. Further, the notes you entered stay the same for the predicate, as you would expect.
However, those notes also got added as an alternate reading (see the readings tab of the database properties sheet): in my case, the Money Amount role reading is "binary notes".
This isn’t a real big deal unless you try to do a model error check or build a logical model when you will be greeted with:
"warning C1049: 'binary notes' : Predicate text contains invalid references to one or more role players."
... because Visio doesn’t know where to put the object types in the reading for the "binary notes" alternate reading.