From: <my...@us...> - 2009-05-25 14:04:23
|
Revision: 1951 http://aperture.svn.sourceforge.net/aperture/?rev=1951&view=rev Author: mylka Date: 2009-05-25 13:32:09 +0000 (Mon, 25 May 2009) Log Message: ----------- 2475980 - added a test that confirms this problem as fixed, generating uris for vcard subcrawer works and incremental crawling of multi-vcard .vcf files is possible Modified Paths: -------------- aperture/trunk/core/crawler/mime/src/test/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawlerTest.java aperture/trunk/core/crawler/vcard/src/test/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawlerTest.java aperture/trunk/test/core/src/main/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java Added Paths: ----------- aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/vcard-vCards-SAP-onemodified.vcf Modified: aperture/trunk/core/crawler/mime/src/test/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawlerTest.java =================================================================== --- aperture/trunk/core/crawler/mime/src/test/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawlerTest.java 2009-05-25 13:29:59 UTC (rev 1950) +++ aperture/trunk/core/crawler/mime/src/test/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawlerTest.java 2009-05-25 13:32:09 UTC (rev 1951) @@ -36,7 +36,7 @@ Model model = handler.getModel(); // let's see if the uri is OK URI messageUri = new URIImpl("uri:dummyuri/mail-thunderbird-1.5.eml"); - assertNewModUnmod(handler, 0, 0, 0, 0); // all metadata in the parent container, no new objects + assertNewModUnmod(handler, 0, 0, 0); // all metadata in the parent container, no new objects // check the extraction results assertTrue(findSingleObjectNode(model, messageUri, NMO.plainTextMessageContent).asLiteral().getValue().contains("test body")); @@ -98,7 +98,7 @@ SubCrawler subCrawler = factory.get(); TestBasicSubCrawlerHandler handler = new TestBasicSubCrawlerHandler(); subCrawl("mail-multipart-test.eml", subCrawler, handler); - assertNewModUnmod(handler, 2, 0, 0, 0); // two attachments - two new objects + assertNewModUnmod(handler, 2, 0, 0); // two attachments - two new objects assertTrue(handler.getNewObjects().contains("mime:uri:dummyuri/mail-multipart-test.eml!/1")); assertTrue(handler.getNewObjects().contains("mime:uri:dummyuri/mail-multipart-test.eml!/2")); handler.close(); @@ -113,7 +113,7 @@ SubCrawler subCrawler = factory.get(); TestBasicSubCrawlerHandler handler = new TestBasicSubCrawlerHandler(); RDFContainer parentMetadata = subCrawl("mail-attachment.eml", subCrawler, handler); - assertNewModUnmod(handler, 1, 0, 0, 0); + assertNewModUnmod(handler, 1, 0, 0); URI parentUri = parentMetadata.getDescribedUri(); URI childUri = new URIImpl(handler.getNewObjects().iterator().next()); Modified: aperture/trunk/core/crawler/vcard/src/test/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawlerTest.java =================================================================== --- aperture/trunk/core/crawler/vcard/src/test/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawlerTest.java 2009-05-25 13:29:59 UTC (rev 1950) +++ aperture/trunk/core/crawler/vcard/src/test/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawlerTest.java 2009-05-25 13:32:09 UTC (rev 1951) @@ -24,6 +24,8 @@ import org.ontoware.rdf2go.model.node.impl.URIImpl; import org.ontoware.rdf2go.vocabulary.RDF; import org.ontoware.rdf2go.vocabulary.XSD; +import org.semanticdesktop.aperture.accessor.AccessData; +import org.semanticdesktop.aperture.accessor.base.AccessDataImpl; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.semanticdesktop.aperture.rdf.impl.RDFContainerImpl; import org.semanticdesktop.aperture.subcrawler.SubCrawlerTestBase; @@ -43,7 +45,7 @@ metadata = subCrawl(DOCS_PATH + "vcard-rfc2426.vcf", subCrawler); Model model = metadata.getModel(); assertStatementCount(2, model, Variable.ANY, RDF.type, NCO.PersonContact); - assertNewModUnmod(handler, 2, 0, 0, 0); + assertNewModUnmod(handler, 2, 0, 0); validate(metadata); metadata.dispose(); @@ -74,7 +76,7 @@ metadata = subCrawl(DOCS_PATH + "vcard-antoni-outlook2003.vcf", subCrawler); // note that NO additional data objects have been reported, this // file contains only one contact - assertNewModUnmod(handler, 0, 0, 0, 0); + assertNewModUnmod(handler, 0, 0, 0); validate(metadata); metadata.dispose(); metadata = null; @@ -85,7 +87,7 @@ metadata = subCrawl(DOCS_PATH + "vcard-antoni-kontact.vcf", subCrawler); // note that NO additional data objects have been reported, this // file contains only one contact - assertNewModUnmod(handler, 0, 0, 0, 0); + assertNewModUnmod(handler, 0, 0, 0); validate(metadata); metadata.dispose(); metadata = null; @@ -96,7 +98,7 @@ metadata = subCrawl(DOCS_PATH + "vcard-dirk.vcf", subCrawler); // note that NO additional data objects have been reported, this // file contains only one contact - assertNewModUnmod(handler, 0, 0, 0, 0); + assertNewModUnmod(handler, 0, 0, 0); validate(metadata); metadata.dispose(); metadata = null; @@ -105,7 +107,7 @@ public void testSapVcardsExtraction() throws Exception { VcardSubCrawler subCrawler = new VcardSubCrawler(); metadata = subCrawl(DOCS_PATH + "vcard-vCards-SAP.vcf", subCrawler); - assertNewModUnmod(handler, 30, 0, 0, 0); + assertNewModUnmod(handler, 30, 0, 0); validate(metadata); metadata.dispose(); metadata = null; @@ -130,6 +132,44 @@ metadata = null; } + /** + * This case tests if the issue 2475980 is solved. Originally the vcard crawler used a library + * called jpim which was crappy. Then we switched to ical4j-vcard which seems to be better. + * + * The vCards-SAP file contains many vcards, if the file doesn't change, the crawler should + * report that all encountered objects are unchanged. + * + * @throws Exception + */ + public void testSapVcardsUrisDontChange() throws Exception { + AccessData ad = new AccessDataImpl(); + ad.initialize(); + + VcardSubCrawler subCrawler = new VcardSubCrawler(); + InputStream stream = org.semanticdesktop.aperture.util.ResourceUtil.getInputStream(DOCS_PATH + "vcard-vCards-SAP.vcf", this.getClass()); + TestBasicSubCrawlerHandler chandler = new TestBasicSubCrawlerHandler(); + RDFContainer parentMetadata = new RDFContainerImpl(chandler.getModel(),new URIImpl("uri:dummyuri")); + subCrawler.subCrawl(null, stream, chandler, null, ad, null, null, parentMetadata); + assertNewModUnmod(chandler, 30, 0, 0); + chandler.close(); + + subCrawler = new VcardSubCrawler(); + stream = org.semanticdesktop.aperture.util.ResourceUtil.getInputStream(DOCS_PATH + "vcard-vCards-SAP.vcf", this.getClass()); + chandler = new TestBasicSubCrawlerHandler(); + parentMetadata = new RDFContainerImpl(chandler.getModel(),new URIImpl("uri:dummyuri")); + subCrawler.subCrawl(null, stream, chandler, null, ad, null, null, parentMetadata); + assertNewModUnmod(chandler, 0, 0, 30); + chandler.close(); + + subCrawler = new VcardSubCrawler(); + stream = org.semanticdesktop.aperture.util.ResourceUtil.getInputStream(DOCS_PATH + "vcard-vCards-SAP-onemodified.vcf", this.getClass()); + chandler = new TestBasicSubCrawlerHandler(); + parentMetadata = new RDFContainerImpl(chandler.getModel(),new URIImpl("uri:dummyuri")); + subCrawler.subCrawl(null, stream, chandler, null, ad, null, null, parentMetadata); + assertNewModUnmod(chandler, 1, 0, 29); + chandler.close(); + } + public void testFrankDawsonNames() throws Exception { VcardSubCrawler subCrawler = new VcardSubCrawler(); metadata = subCrawl(DOCS_PATH + "vcard-rfc2426.vcf", subCrawler); @@ -334,17 +374,15 @@ metadata = null; } - // this test failes because of a very controversial feature in jpim - // TODO finish this after the uid issue is resolved -// public void testUid() throws Exception { -// VcardSubCrawler subCrawler = new VcardSubCrawler(); -// metadata = subCrawl(DOCS_PATH + "vcard-antoni-kontact.vcf", subCrawler); -// Model model = metadata.getModel(); -// Resource dirkContact = findContact(model, "Antoni Mylka"); -// assertSingleValueProperty(model, dirkContact, NCO.contactUID, "BHTRsCvcmd"); -// metadata.dispose(); -// metadata = null; -// } + public void testUid() throws Exception { + VcardSubCrawler subCrawler = new VcardSubCrawler(); + metadata = subCrawl(DOCS_PATH + "vcard-antoni-kontact.vcf", subCrawler); + Model model = metadata.getModel(); + Resource dirkContact = findContact(model, "Antoni Mylka"); + assertSingleValueProperty(model, dirkContact, NCO.contactUID, "BHTRsCvcmd"); + metadata.dispose(); + metadata = null; + } private RDFContainer subCrawl(String string, VcardSubCrawler subCrawler) throws Exception { InputStream stream = org.semanticdesktop.aperture.util.ResourceUtil.getInputStream(string, this.getClass()); Modified: aperture/trunk/test/core/src/main/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java =================================================================== --- aperture/trunk/test/core/src/main/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java 2009-05-25 13:29:59 UTC (rev 1950) +++ aperture/trunk/test/core/src/main/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java 2009-05-25 13:32:09 UTC (rev 1951) @@ -132,10 +132,9 @@ * @param newObjects the desired number of new objects * @param changedObjects the desired number of changed objects * @param unchangedObjects the desired number of unchanged objects - * @param deletedObjects the desired number of deleted objects */ public void assertNewModUnmod(TestBasicSubCrawlerHandler handler, int newObjects, - int changedObjects, int unchangedObjects, int deletedObjects) { + int changedObjects, int unchangedObjects) { assertEquals(handler.getNewObjects().size(), newObjects); assertEquals(handler.getChangedObjects().size(), changedObjects); assertEquals(handler.getUnchangedObjects().size(), unchangedObjects); Added: aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/vcard-vCards-SAP-onemodified.vcf =================================================================== --- aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/vcard-vCards-SAP-onemodified.vcf (rev 0) +++ aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/vcard-vCards-SAP-onemodified.vcf 2009-05-25 13:32:09 UTC (rev 1951) @@ -0,0 +1,292 @@ +BEGIN:VCARD +VERSION:3.0 +N:Brown;Gwendolina;;; +FN:Gwendolina Brown +EMAIL;type=INTERNET;type=WORK;type=pref:Gwe...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:07D43ED3-2026-4769-83C7-94726573A70D\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Smalholtz;Peter;;; +FN:Peter Smalholtz +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Pet...@sa... +TEL;type=WORK;type=pref:§ +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:4B505D70-F921-4C8D-8878-34302A6480BC\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Krull;Kristina;;; +FN:Kristina Krull +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Kri...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:77FB9B89-A196-46EE-AC61-CCCBAC872235\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Dreger;Rutger;;; +FN:Rutger Dreger +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Rut...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:4C5B2EFE-BF04-43D8-BAC1-56FE9FFA5F3D\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Töcken;Frida;;; +FN:Karlsruhe Travel +ORG:Karlsruhe Travel; +EMAIL;type=INTERNET;type=WORK;type=pref:Fri...@ka... +X-ABShowAs:COMPANY +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:525660B1-1332-4980-93ED-A50AFEB5609B\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Bernadotte;Ulla;;; +FN:Ulla Bernadotte +EMAIL;type=INTERNET;type=WORK;type=pref:Ul...@ya... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:6BCC314A-2460-4B8D-ADBC-52A6DEA79AFC\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Aubrey;Albert;;; +FN:Albert Aubrey +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Alb...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:DD3883AB-279D-488C-9147-3844BDA78968\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Meyer;Helmut;;; +FN:Helmut Meyer +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Hel...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:5D61771B-EB5F-4955-AF20-696598E445FD\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Andriotti;Marco;;; +FN:Marco Andriotti +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Mar...@sa... +TEL;type=WORK;type=pref:+44 28 90930084 +item1.ADR;type=WORK;type=pref:;;Shore Road;Newtownabbey;;BT37 0QB;United Kingdom +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:29B73432-E9DF-4381-9EAA-E0328AB34DA7\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Spaßlund;Ingrid;;; +FN:Ingrid Spaßlund +ORG:Nike; +EMAIL;type=INTERNET;type=WORK;type=pref:Ing...@ni... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:47E30CAB-175F-4CA8-A193-D630ACC282C2\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Atkins;Adam;;; +FN:Adam Atkins Modified +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Ada...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:C30E59B9-2C00-4160-91E4-9730FEF2A5EB\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Williams;Martin;;; +FN:Martin Williams +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Mar...@sa... +TEL;type=WORK;type=pref:+61 7 3259 9599 +item1.ADR;type=WORK;type=pref:;;133 Mary Street;Brisbane;;QLD 4000;Australia +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:DC826FA6-C7D0-4600-BFA0-45958CDCA851\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Stern;Margit;;; +FN:Margit Stern +TEL;type=WORK;type=pref:+4978432748392 +item1.ADR;type=WORK;type=pref:;;Brotmannstraße 7;Siegertsbrunn;;85635;Deutschland +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:459248A9-DB7D-4C72-AC02-A765C277F942\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Fuchs;Frederica;;; +FN:Frederica Fuchs +EMAIL;type=INTERNET;type=WORK;type=pref:Fre...@ho... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:379703B2-D424-45BA-9ED8-F2E2E1F63351\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Blümchen;Günther;;; +FN:Günther Blümchen +ORG:Oracle; +EMAIL;type=INTERNET;type=WORK;type=pref:Gue...@or... +TEL;type=WORK;type=pref:+1.650.506.7000 +item1.ADR;type=WORK;type=pref:;;500 Oracle Parkway;Redwood Shores;;CA 94065;United States of America +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:2BFC53C0-5B77-476E-AEC4-37A6B7C5A9E7\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Kohler;Hans;;; +FN:Hans Kohler +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Han...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:16D88E45-BC2E-4B9B-A171-F838B4E09592\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Lang;Fritz;;; +FN:Fritz Lang +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Fri...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:3A73FE84-8A80-4512-ACA0-D0C9C5A06627\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Stern;Claudia;;; +FN:Claudia Stern +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:cla...@cs... +TEL;type=WORK;type=pref:+49(721)123456 +TEL;type=CELL:+49(175)1234567 +item1.ADR;type=WORK;type=pref:;;Vincenz-Priessnitz-Str. 1;Karlsruhe;;76131;Germany +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:2E739C33-31EC-48F9-A5BC-C7D709C08959\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Treutiger;Harald;;; +FN:Harald Treutiger +ORG:Siemens; +EMAIL;type=INTERNET;type=WORK;type=pref:Har...@si... +TEL;type=WORK;type=pref:+94 (0800) 2255337 +item1.ADR;type=WORK;type=pref:;;Werner-von-Siemens-Straße 6;Augsburg;;86159;Deutschland +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:EDD1767A-549F-4E66-9FC4-FE2CF1ED6E46\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Müller;Berit;;; +FN:Berit Müller +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Ber...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:CD0506CF-0829-4762-9EC7-09A1B0606D44\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Wolf;Mathilde;;; +FN:Mathilde Wolf +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Mat...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:74C4AFF9-E27F-42C5-BB28-B7330BD89B8E\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Hageman;Dirk;;; +FN:Dirk Hageman +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:di...@cs... +TEL;type=WORK;type=pref:+49(721)847932 +TEL;type=CELL:+49(175)9876543 +item1.ADR;type=WORK;type=pref:;;Vincenz-Priessnitz-Str. 1;Karlsruhe;;76131;Germany +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:F3778FC5-87BB-4581-886C-350BF0B70BCB\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Wimmerman;Daniel;;; +FN:Daniel Wimmerman +EMAIL;type=INTERNET;type=WORK;type=pref:Dan...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:B2273377-F134-47FF-A803-36BBE1287372\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Kurtz;Daniel;;; +FN:Daniel Kurtz +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Dan...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:F2BD97A3-9901-4587-B944-4B8CBBC5B959\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Schnurrbart;Caspar;;; +FN:Caspar Schnurrbart +EMAIL;type=INTERNET;type=WORK;type=pref:Cas...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:3A107906-899E-4C66-B781-FFB05E2B1369\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Setter;Monika;;; +FN:Monika Setter +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Mon...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:6A48E535-67CC-41B3-987B-CFC098CDE5EC\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Glans;Heinrich;;; +FN:Heinrich Glans +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Hei...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:AC03E8F2-D4C5-4603-93A6-306170553EFB\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Fischer;Ambrosia;;; +FN:Ambrosia Fischer +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Amb...@sa... +TEL;type=WORK;type=pref:+49(721)894763 +TEL;type=CELL:+49(175)74632934 +item1.ADR;type=WORK;type=pref:;;Vincenz-Priessnitz-Str. 1;Karlsruhe;;76131;Germany +item1.X-ABADR:se +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:E8167957-903A-4861-8B39-C92698E59425\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Sprung;Markus;;; +FN:Markus Sprung +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Mar...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:8365FAAF-0362-4AF9-A080-D4DAED8BBF94\:ABPerson +END:VCARD +BEGIN:VCARD +VERSION:3.0 +N:Smith;Diana;;; +FN:Diana Smith +ORG:SAP; +EMAIL;type=INTERNET;type=WORK;type=pref:Dia...@sa... +CATEGORIES:Demo,Nepomuk(SAP) +X-ABUID:A2BC9E71-2D15-4A86-A13D-621F2FCE1E86\:ABPerson +END:VCARD This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |