I would say that there are already two examples of making information be shown or not in the Pokédex depending on a value in an array ("seen" and "owned"), so just copying them and tweaking a few scripts would work.
It may be called "owned", but not in-game. In-game it's simply an indication of whether the Pokédex entry for that species has been completely filled, which traditionally you can only do by owning a member of that species. I'd say there's nothing wrong with marking the species as "owned" even if the player themselves hasn't ever owned a member of that species. Alternatively (and a better solution, I think) you can just to mark them as seen instead, and make the player catch their own Pokémon if they want to complete the entry (the main reason the Pokédex exists is to be an incentive to catch 'em all).
First of all, thank you very much for your help. The only reason I hadn't just marked them as seen is that this is a high-difficulty, Pokémon-sparse setting (kind of like Colosseum). While you cancatch all Pokémon, almost everyone will be caught in an event, rather than as a random encounter.
Seeing as I intend to change up some of the Pokemon's types (among other things), finding out information ahead of time would be of great benefit in Gym Battles (which are going to be very difficult, if I do this right).
On the other hand, I can't help but agree with you regarding the Pokédex as an incentive, rather than simply a means to an end. Considering that, I believe I may simply make a Pokemon's Type visible in a "seen" Pokédex entry, and leave the rest of the info limited to the owned screen.
Thank you so much for your input: I hadn't really considered the Meta-significance of the Pokédex, and you're post really helped illuminate that for me.