Wednesday, December 10, 2003
I can't possibly blog every session or highlight all the stuff I'm learning here at the PDC - but needless to say my head is spinning.
These folks have come up with their own 'triples' - their own subject-predicate-object sceanrio. It's part of their WinFS file system (formerly known as Cairo.) They have no idea that this is identical to rdf's approach - and they NEVER mention the S word (Semantic) - but they DO grok that having RELATIONSHIPS baked into the file system - is a good thing. They also have synchronizatioon and compositing baked in - as well.
Synchronization adaptors is the method they provide for allowing US to create our own sync sceanrios. All of these technologies I've been talking about - are shown in real live demo - usually by typing in less than 20 lines of XAML or C# code into Visual Studio. Right in front of our eyes: IM is added (one line), contacts are included (5 lines), documents are synched (10 lines) or even UI's animated (4 lines.)
So this is VERY powerful stuff, being committed to by the world's largest software company - and whether we like it or not - it's at least PART of our future. WinFS id much more thsan just an o-o file system. It has Documents(files, media, etc.) - Messages (email, IM, fax, confercning) - Contacts (people, orgs, groups and households) ALL as first order objects.
In others words - they're built into the system - at all levels. EVERY app and service can access shared documents, messages or contacts. Any of these items can have a relationships to another and kept in sync. It's heavy!See also example of WinFS Here is an example relationship type I could use to create a graph of Foo items:
<RelationshipType Name=“FooToFoo“ BaseType=“System.Storage.Relationship“> <Source Name=“SourceFoo“ Type=“Foo“/> <Target Name=“TargetFoo“ Type=“Foo“/> <Property Name=“X“ Type=“System.Storage.WinFSTypes.Int32“/> </Relationship>If I have two Foo items, I can relate them as follows: ItemContext ic = ItemContext.Open(); Foo f1 = ic.FindItemById( id1 ); Foo f2 = ic.FindItemById( id2 ); f1.OutRelationships.Add( new FooToFoo( f2 ) ); ic.SaveChanges(); So, now to answer the questions. WinFS comes with an item type “Folder” and relationship type “FolderMember”. The FolderMember relationship requires that the source item type be Folder but allows the target item type. So, Robert, because items are put in folders using relationships and an item can be targeted by more then one relationship, you can put an item in more then one folder. And Shawn, in WinFS foldering isn't really obsolete, just expanded to encompass a much more powerful concept: relationships.