Learning WinFS
Ok, I'm going to write a series of posts that contain random, disconnected points about WinFS as they come to mind. I'm not going to write them as bullet points or anything, just free paragraphs. I might even add to the points in this post later on.
Keep in mind that some of these points may not even be correct. I'm sure someone will correct me if that's the case (Chime in any time you like, Sahil).
Everything that can be a stand-alone item (Message, Document, AudioTrack etc) ultimately inherits from the Item class.
The ItemFragment class represents an item that really can only exist as part of a group owned by another item. For example, a participant in an email message. Participant is derived from ItemFragment, and Message has an ItemFragmentCollection property called Participants.
One would assume that Issue in Comicster could be an ItemFragment, because an Issue can't exist without a Title.
Anything that links two stand-alone items is derived from Link. In WinFS they seem to be referred to as Associations. Links can have properties, so a Link between Issue and Character (Appearance?) could contain a string property called AppearanceDetails.
Apparently it is also possible to link two items without using a link. Sort of the equivalent of a property in one that simply points to the other.
The StorageSearcher class is a weird sort of hybrid. It represents a search and the collection of results from that search. It's a generic class based on the result type - you would use StorageSearcher<Character> if you were searching for characters.
Properties which represent collections of other items (like if Issue had a property called Appearances or Cast) seem to be of type StorageSearcher.
Since everything in WinFS is defined by properties and association (links/relationships), the idea of a "collection file" is kind of redundant. Instead, you would have a series of Collection items (one for each collection), and each of those items would have some sort of descriptive name ("Mabster's Collection"). Then there would be associations between that collection and the trades/titles within it. From there it would be a simple task to branch out and discover issues, characters etc.
More to come! I might even turn this into a "How I Learned WinFS" article if I get enough things together. In fact, I will try to document the steps I take in writing my first WinFS application (yes, the next or next-after-next version of Comicster).

Comments
# crucible
1/02/2006 10:37 PM
quick question... not that I followed half of that and will get you to explain it in detail tomorrow.
Would you then store all issues/characters/etc within your store and Only link the ones in the collection, or would you still only list within your datastore only the issues/characters/etc that could be within any collection currently in your datastore, and still download anything outside that scope?
my point being - would each user then have the total data of comicster locally, or still download as required - given that you would, or the user would, then have to rebuild those relationships?
and if... when a user downloads a new issue... would it automatically populate the relationships between similar issues under the same writer/publishing house... or would that be up to the user, or intelligence of the program?
I guess it comes down to what we were talking about earlier, about the software, I think on dnr, that facial recognizes "uncle bill". So you could get it to learn over time to know who "uncle bill" is, and then when you insert a new photo it can tell if its "uncle bill" or someone else...
could it do something similar, like know if it is Amazing Spiderman - issue #xxx that it is automatically related to all the other amazing spidermans, etc, etc.
hope that makes sense and didnt sound too stupid :P
# mabster
2/02/2006 6:56 AM
What I'd do is store on your PC only the issues/characters/etc that appeared in your collection(s).
The benefit of WinFS in this application, though, would be that issues could be shared between collections. If I was sharing my PC with another user and they had some of the same comics as me, we wouldn't have to store the issue twice.
As for downloading: Yes, it would download all the necessary related info (cast, crew, cover images etc), not just the issue itself. Dunno how that would work yet though! :)