1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
|
// This file has been auto-generated by the ontology2code script.
// Do not modify it directly.
/* ontology.vala
*
* Copyright © 2011 Collabora Ltd.
* By Seif Lotfy <seif@lotfy.com>
* By Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com>
* Copyright © 2011 Michal Hruby <michal.mhr@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Get information about interpretation/manifestation symbols
*/
namespace Zeitgeist
{
namespace Symbol
{
private static HashTable<string, Info> all_symbols = null;
private static bool initialized = false;
public static unowned string get_display_name (string symbol_uri)
{
initialize_symbols ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return symbol_uri;
return symbol.display_name;
}
public static unowned string get_description (string symbol_uri)
{
initialize_symbols ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return "";
return symbol.description;
}
public static List<unowned string> get_all_parents (string symbol_uri)
{
initialize_symbols ();
var results = new List<string> ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return results;
foreach (unowned string uri in symbol.parents)
{
results.append (uri);
// Recursively get the other parents
foreach (string parent_uri in get_all_parents (uri))
if (results.index (parent_uri) == -1)
results.append (parent_uri);
}
return results;
}
public static List<unowned string> get_all_children (string symbol_uri)
{
initialize_symbols ();
var results = new List<string> ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return results;
foreach (unowned string uri in symbol.all_children)
results.append (uri);
return results;
}
public static List<unowned string> get_children (string symbol_uri)
{
initialize_symbols ();
var results = new List<string> ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return results;
foreach (unowned string uri in symbol.children)
results.append(uri);
return results;
}
public static List<unowned string> get_parents (string symbol_uri)
{
initialize_symbols ();
var results = new List<string>();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return results;
foreach (unowned string uri in symbol.parents)
results.append (uri);
return results;
}
public static bool is_a (string? symbol_uri, string? parent_uri)
{
if (parent_uri == null || symbol_uri == null) return false;
initialize_symbols ();
var symbol = all_symbols.lookup (symbol_uri);
if (symbol == null) return false;
if (parent_uri == symbol_uri) return true;
foreach (unowned string uri in get_all_parents (symbol_uri))
if (parent_uri == uri)
return true;
return false;
}
private static void initialize_symbols ()
{
if (initialized) return;
initialized = true;
string uri, display_name, description;
string[] parents, children, all_children;
uri = Zeitgeist.NCAL.ALARM;
description = "Provide a grouping of component properties that define an alarm.";
display_name = "Alarm";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.ATTACHMENT;
description = "An object attached to a calendar entity. This class has been introduced to serve as a structured value of the ncal:attach property. See the documentation of ncal:attach for details.";
display_name = "Attachment";
parents = { NFO.ATTACHMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.CALENDAR;
description = "A calendar. Inspirations for this class can be traced to the VCALENDAR component defined in RFC 2445 sec. 4.4, but it may just as well be used to represent any kind of Calendar.";
display_name = "Calendar";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.CALENDAR_DATA_OBJECT;
description = "A DataObject found in a calendar. It is usually interpreted as one of the calendar entity types (e.g. Event, Journal, Todo etc.)";
display_name = "CalendarDataObject";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.EVENT;
description = "Provide a grouping of component properties that describe an event.";
display_name = "Event";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.FREEBUSY;
description = "Provide a grouping of component properties that describe either a request for free/busy time, describe a response to a request for free/busy time or describe a published set of busy time.";
display_name = "Freebusy";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.JOURNAL;
description = "Provide a grouping of component properties that describe a journal entry.";
display_name = "Journal";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.TIMEZONE;
description = "Provide a grouping of component properties that defines a time zone.";
display_name = "Timezone";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCAL.TODO;
description = "Provide a grouping of calendar properties that describe a to-do.";
display_name = "Todo";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.CONTACT;
description = "A Contact. A piece of data that can provide means to identify or communicate with an entity.";
display_name = "Contact";
parents = { NIE.INFORMATION_ELEMENT };
children = { NCO.PERSON_CONTACT, NCO.ORGANIZATION_CONTACT };
all_children = { NCO.PERSON_CONTACT, NCO.ORGANIZATION_CONTACT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.CONTACT_GROUP;
description = "A group of Contacts. Could be used to express a group in an addressbook or on a contact list of an IM application. One contact can belong to many groups.";
display_name = "ContactGroup";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.CONTACT_LIST;
description = "A contact list, this class represents an addressbook or a contact list of an IM application. Contacts inside a contact list can belong to contact groups.";
display_name = "ContactList";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.CONTACT_LIST_DATA_OBJECT;
description = "An entity occuring on a contact list (usually interpreted as an nco:Contact)";
display_name = "ContactListDataObject";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.ORGANIZATION_CONTACT;
description = "A Contact that denotes on Organization.";
display_name = "OrganizationContact";
parents = { NCO.CONTACT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NCO.PERSON_CONTACT;
description = "A Contact that denotes a Person. A person can have multiple Affiliations.";
display_name = "PersonContact";
parents = { NCO.CONTACT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.APPLICATION;
description = "An application";
display_name = "Application";
parents = { NFO.SOFTWARE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.ARCHIVE;
description = "A compressed file. May contain other files or folder inside.";
display_name = "Archive";
parents = { NFO.DATA_CONTAINER };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.ARCHIVE_ITEM;
description = "A file entity inside an archive.";
display_name = "ArchiveItem";
parents = { NFO.EMBEDDED_FILE_DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.ATTACHMENT;
description = "A file attached to another data object. Many data formats allow for attachments: emails, vcards, ical events, id3 and exif...";
display_name = "Attachment";
parents = { NFO.EMBEDDED_FILE_DATA_OBJECT };
children = { NCAL.ATTACHMENT };
all_children = { NCAL.ATTACHMENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.AUDIO;
description = "A file containing audio content";
display_name = "Audio";
parents = { NFO.MEDIA };
children = { NMM.MUSIC_PIECE };
all_children = { NMM.MUSIC_PIECE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.BOOKMARK;
description = "A bookmark of a webbrowser. Use nie:title for the name/label, nie:contentCreated to represent the date when the user added the bookmark, and nie:contentLastModified for modifications. nfo:bookmarks to store the link.";
display_name = "Bookmark";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.BOOKMARK_FOLDER;
description = "A folder with bookmarks of a webbrowser. Use nfo:containsBookmark to relate Bookmarks. Folders can contain subfolders, use containsBookmarkFolder to relate them.";
display_name = "Bookmark Folder";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.CURSOR;
description = "A Cursor.";
display_name = "Cursor";
parents = { NFO.RASTER_IMAGE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.DATA_CONTAINER;
description = "A superclass for all entities, whose primary purpose is to serve as containers for other data object. They usually don't have any \"meaning\" by themselves. Examples include folders, archives and optical disc images.";
display_name = "DataContainer";
parents = { NIE.INFORMATION_ELEMENT };
children = { NFO.FILESYSTEM, NFO.ARCHIVE, NFO.FOLDER, NFO.TRASH };
all_children = { NFO.FILESYSTEM, NFO.ARCHIVE, NFO.FOLDER, NFO.TRASH, NFO.FILESYSTEM_IMAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.DELETED_RESOURCE;
description = "A file entity that has been deleted from the original source. Usually such entities are stored within various kinds of 'Trash' or 'Recycle Bin' folders.";
display_name = "DeletedResource";
parents = { NFO.FILE_DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.DOCUMENT;
description = "A generic document. A common superclass for all documents on the desktop.";
display_name = "Document";
parents = { NIE.INFORMATION_ELEMENT };
children = { NFO.TEXT_DOCUMENT, NFO.PRESENTATION, NFO.MIND_MAP, NFO.SPREADSHEET };
all_children = { NFO.SOURCE_CODE, NFO.SPREADSHEET, NFO.PAGINATED_TEXT_DOCUMENT, NFO.TEXT_DOCUMENT, NFO.HTML_DOCUMENT, NFO.MIND_MAP, NFO.PLAIN_TEXT_DOCUMENT, NFO.PRESENTATION };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.EMBEDDED_FILE_DATA_OBJECT;
description = "A file embedded in another data object. There are many ways in which a file may be embedded in another one. Use this class directly only in cases if none of the subclasses gives a better description of your case.";
display_name = "EmbeddedFileDataObject";
parents = { NFO.FILE_DATA_OBJECT };
children = { NFO.ARCHIVE_ITEM, NFO.ATTACHMENT };
all_children = { NFO.ARCHIVE_ITEM, NCAL.ATTACHMENT, NFO.ATTACHMENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.EXECUTABLE;
description = "An executable file.";
display_name = "Executable";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.FILESYSTEM;
description = "A filesystem. Examples of filesystems include hard disk partitions, removable media, but also images thereof stored in files such as ISO.";
display_name = "Filesystem";
parents = { NFO.DATA_CONTAINER };
children = { NFO.FILESYSTEM_IMAGE };
all_children = { NFO.FILESYSTEM_IMAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.FILESYSTEM_IMAGE;
description = "An image of a filesystem. Instances of this class may include CD images, DVD images or hard disk partition images created by various pieces of software (e.g. Norton Ghost). Deprecated in favor of nfo:Filesystem.";
display_name = "FilesystemImage";
parents = { NFO.FILESYSTEM };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.FILE_DATA_OBJECT;
description = "A resource containing a finite sequence of bytes with arbitrary information, that is available to a computer program and is usually based on some kind of durable storage. A file is durable in the sense that it remains available for programs to use after the current program has finished.";
display_name = "file";
parents = { NIE.DATA_OBJECT };
children = { NFO.EMBEDDED_FILE_DATA_OBJECT, NFO.DELETED_RESOURCE, NFO.REMOTE_DATA_OBJECT };
all_children = { NFO.ARCHIVE_ITEM, NFO.EMBEDDED_FILE_DATA_OBJECT, NCAL.ATTACHMENT, NFO.REMOTE_DATA_OBJECT, NFO.ATTACHMENT, NFO.DELETED_RESOURCE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.FOLDER;
description = "A folder/directory. Examples of folders include folders on a filesystem and message folders in a mailbox.";
display_name = "Folder";
parents = { NFO.DATA_CONTAINER };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.FONT;
description = "A font.";
display_name = "Font";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.HARD_DISK_PARTITION;
description = "A partition on a hard disk";
display_name = "HardDiskPartition";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.HTML_DOCUMENT;
description = "A HTML document, may contain links to other files.";
display_name = "HtmlDocument";
parents = { NFO.PLAIN_TEXT_DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.ICON;
description = "An Icon (regardless of whether it's a raster or a vector icon. A resource representing an icon could have two types (Icon and Raster, or Icon and Vector) if required.";
display_name = "Icon";
parents = { NFO.IMAGE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.IMAGE;
description = "A file containing an image.";
display_name = "Image";
parents = { NFO.VISUAL };
children = { NFO.ICON, NFO.VECTOR_IMAGE, NFO.RASTER_IMAGE };
all_children = { NFO.ICON, NFO.VECTOR_IMAGE, NFO.CURSOR, NFO.RASTER_IMAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.MEDIA;
description = "A piece of media content. This class may be used to express complex media containers with many streams of various media content (both aural and visual).";
display_name = "Media";
parents = { NIE.INFORMATION_ELEMENT };
children = { NFO.VISUAL, NFO.AUDIO };
all_children = { NMM.TVSHOW, NFO.AUDIO, NMM.MUSIC_PIECE, NFO.VIDEO, NMM.MOVIE, NFO.VISUAL, NFO.CURSOR, NFO.ICON, NFO.RASTER_IMAGE, NFO.IMAGE, NFO.VECTOR_IMAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.MEDIA_LIST;
description = "A file containing a list of media files.e.g. a playlist";
display_name = "MediaList";
parents = { NIE.INFORMATION_ELEMENT };
children = { NMM.MUSIC_ALBUM };
all_children = { NMM.MUSIC_ALBUM };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.MEDIA_STREAM;
description = "A stream of multimedia content, usually contained within a media container such as a movie (containing both audio and video) or a DVD (possibly containing many streams of audio and video). Most common interpretations for such a DataObject include Audio and Video.";
display_name = "MediaStream";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.MIND_MAP;
description = "A MindMap, created by a mind-mapping utility. Examples might include FreeMind or mind mapper.";
display_name = "MindMap";
parents = { NFO.DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.OPERATING_SYSTEM;
description = "An OperatingSystem";
display_name = "OperatingSystem";
parents = { NFO.SOFTWARE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.PAGINATED_TEXT_DOCUMENT;
description = "A file containing a text document, that is unambiguously divided into pages. Examples might include PDF, DOC, PS, DVI etc.";
display_name = "PaginatedTextDocument";
parents = { NFO.TEXT_DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.PLAIN_TEXT_DOCUMENT;
description = "A file containing plain text (ASCII, Unicode or other encodings). Examples may include TXT, HTML, XML, program source code etc.";
display_name = "PlainTextDocument";
parents = { NFO.TEXT_DOCUMENT };
children = { NFO.SOURCE_CODE, NFO.HTML_DOCUMENT };
all_children = { NFO.SOURCE_CODE, NFO.HTML_DOCUMENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.PRESENTATION;
description = "A Presentation made by some presentation software (Corel Presentations, OpenOffice Impress, MS Powerpoint etc.)";
display_name = "Presentation";
parents = { NFO.DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.RASTER_IMAGE;
description = "A raster image.";
display_name = "RasterImage";
parents = { NFO.IMAGE };
children = { NFO.CURSOR };
all_children = { NFO.CURSOR };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.REMOTE_DATA_OBJECT;
description = "A file data object stored at a remote location. Don't confuse this class with a RemotePortAddress. This one applies to a particular resource, RemotePortAddress applies to an address, that can have various interpretations.";
display_name = "RemoteDataObject";
parents = { NFO.FILE_DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.REMOTE_PORT_ADDRESS;
description = "An address specifying a remote host and port. Such an address can be interpreted in many ways (examples of such interpretations include mailboxes, websites, remote calendars or filesystems), depending on an interpretation, various kinds of data may be extracted from such an address.";
display_name = "RemotePortAddress";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.SOFTWARE;
description = "A piece of software. Examples may include applications and the operating system. This interpretation most commonly applies to SoftwareItems.";
display_name = "Software";
parents = { NIE.INFORMATION_ELEMENT };
children = { NFO.OPERATING_SYSTEM, NFO.APPLICATION };
all_children = { NFO.APPLICATION, NFO.OPERATING_SYSTEM };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.SOFTWARE_ITEM;
description = "A DataObject representing a piece of software. Examples of interpretations of a SoftwareItem include an Application and an OperatingSystem.";
display_name = "SoftwareItem";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.SOFTWARE_SERVICE;
description = "A service published by a piece of software, either by an operating system or an application. Examples of such services may include calendar, addressbook and mailbox managed by a PIM application. This category is introduced to distinguish between data available directly from the applications (Via some Interprocess Communication Mechanisms) and data available from files on a disk. In either case both DataObjects would receive a similar interpretation (e.g. a Mailbox) and wouldn't differ on the content level.";
display_name = "SoftwareService";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.SOURCE_CODE;
description = "Code in a compilable or interpreted programming language.";
display_name = "SourceCode";
parents = { NFO.PLAIN_TEXT_DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.SPREADSHEET;
description = "A spreadsheet, created by a spreadsheet application. Examples might include Gnumeric, OpenOffice Calc or MS Excel.";
display_name = "Spreadsheet";
parents = { NFO.DOCUMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.TEXT_DOCUMENT;
description = "A text document";
display_name = "TextDocument";
parents = { NFO.DOCUMENT };
children = { NFO.PAGINATED_TEXT_DOCUMENT, NFO.PLAIN_TEXT_DOCUMENT };
all_children = { NFO.SOURCE_CODE, NFO.HTML_DOCUMENT, NFO.PAGINATED_TEXT_DOCUMENT, NFO.PLAIN_TEXT_DOCUMENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.TRASH;
description = "Represents a container for deleted files, a feature common in modern operating systems.";
display_name = "Trash";
parents = { NFO.DATA_CONTAINER };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.VECTOR_IMAGE;
description = "";
display_name = "VectorImage";
parents = { NFO.IMAGE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.VIDEO;
description = "A video file.";
display_name = "Video";
parents = { NFO.VISUAL };
children = { NMM.TVSHOW, NMM.MOVIE };
all_children = { NMM.TVSHOW, NMM.MOVIE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.VISUAL;
description = "File containing visual content.";
display_name = "Visual";
parents = { NFO.MEDIA };
children = { NFO.IMAGE, NFO.VIDEO };
all_children = { NMM.TVSHOW, NFO.VECTOR_IMAGE, NFO.VIDEO, NMM.MOVIE, NFO.CURSOR, NFO.ICON, NFO.IMAGE, NFO.RASTER_IMAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.WEBSITE;
description = "A website, usually a container for remote resources, that may be interpreted as HTMLDocuments, images or other types of content.";
display_name = "Website";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NFO.WEB_DATA_OBJECT;
description = "An information resources of which representations (files, streams) can be retrieved through a web server. They may be generated at retrieval time. Typical examples are pages served by PHP or AJAX or mp3 streams.";
display_name = "web data object";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NIE.DATA_OBJECT;
description = "A unit of data that is created, annotated and processed on the user desktop. It represents a native structure the user works with. The usage of the term 'native' is important. It means that a DataObject can be directly mapped to a data structure maintained by a native application. This may be a file, a set of files or a part of a file. The granularity depends on the user. This class is not intended to be instantiated by itself. Use more specific subclasses.";
display_name = "DataObject";
parents = { };
children = { NFO.MEDIA_STREAM, NFO.FILE_DATA_OBJECT, NFO.SOFTWARE_SERVICE, NFO.HARD_DISK_PARTITION, NCO.CONTACT_LIST_DATA_OBJECT, ZG.EVENT_MANIFESTATION, NMO.MAILBOX_DATA_OBJECT, NFO.WEB_DATA_OBJECT, NFO.REMOTE_PORT_ADDRESS, NFO.SOFTWARE_ITEM, NCAL.CALENDAR_DATA_OBJECT };
all_children = { NCAL.ATTACHMENT, ZG.EVENT_MANIFESTATION, NFO.SOFTWARE_SERVICE, ZG.HEURISTIC_ACTIVITY, NCO.CONTACT_LIST_DATA_OBJECT, NFO.SOFTWARE_ITEM, NFO.FILE_DATA_OBJECT, NFO.HARD_DISK_PARTITION, NFO.EMBEDDED_FILE_DATA_OBJECT, NFO.DELETED_RESOURCE, NMO.MAILBOX_DATA_OBJECT, NFO.WEB_DATA_OBJECT, NCAL.CALENDAR_DATA_OBJECT, ZG.SYSTEM_NOTIFICATION, NFO.MEDIA_STREAM, NFO.ARCHIVE_ITEM, ZG.SCHEDULED_ACTIVITY, NFO.REMOTE_DATA_OBJECT, NFO.ATTACHMENT, ZG.USER_ACTIVITY, NFO.REMOTE_PORT_ADDRESS, ZG.WORLD_ACTIVITY };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NIE.INFORMATION_ELEMENT;
description = "A unit of content the user works with. This is a superclass for all interpretations of a DataObject.";
display_name = "InformationElement";
parents = { };
children = { NFO.EXECUTABLE, NCAL.JOURNAL, NMO.MESSAGE, NFO.WEBSITE, NCAL.TODO, NFO.MEDIA_LIST, NCAL.ALARM, NCAL.CALENDAR, NCO.CONTACT, NCAL.EVENT, NFO.BOOKMARK_FOLDER, NFO.BOOKMARK, NFO.FONT, NFO.DATA_CONTAINER, ZG.EVENT_INTERPRETATION, NFO.DOCUMENT, NMO.MAILBOX, NCAL.FREEBUSY, NCO.CONTACT_LIST, NMM.TVSERIES, NCO.CONTACT_GROUP, NFO.SOFTWARE, NCAL.TIMEZONE, NMO.MIME_ENTITY, NFO.MEDIA };
all_children = { NFO.EXECUTABLE, NCAL.JOURNAL, ZG.MODIFY_EVENT, NMO.IMMESSAGE, NMO.MESSAGE, NFO.WEBSITE, NCAL.TODO, NFO.SPREADSHEET, ZG.CREATE_EVENT, NFO.MEDIA_LIST, NFO.FILESYSTEM, NCAL.ALARM, NCO.PERSON_CONTACT, NCAL.CALENDAR, NFO.BOOKMARK, NFO.TRASH, NCAL.EVENT, ZG.LEAVE_EVENT, NFO.ARCHIVE, ZG.ACCESS_EVENT, NFO.VECTOR_IMAGE, NFO.HTML_DOCUMENT, NFO.VIDEO, NFO.BOOKMARK_FOLDER, ZG.ACCEPT_EVENT, NCO.CONTACT, ZG.EXPIRE_EVENT, NFO.FONT, NFO.DATA_CONTAINER, NFO.RASTER_IMAGE, NFO.IMAGE, NFO.PLAIN_TEXT_DOCUMENT, ZG.EVENT_INTERPRETATION, NMO.MIME_ENTITY, NFO.APPLICATION, NFO.DOCUMENT, NMM.MUSIC_PIECE, NMO.MAILBOX, NMO.EMAIL, NFO.TEXT_DOCUMENT, NFO.FILESYSTEM_IMAGE, NFO.ICON, NFO.PRESENTATION, NCO.ORGANIZATION_CONTACT, NMM.MUSIC_ALBUM, NFO.SOURCE_CODE, NFO.VISUAL, ZG.DENY_EVENT, NFO.PAGINATED_TEXT_DOCUMENT, NMM.TVSHOW, NCO.CONTACT_LIST, NMM.TVSERIES, NFO.AUDIO, NCO.CONTACT_GROUP, NFO.OPERATING_SYSTEM, NFO.SOFTWARE, NMM.MOVIE, ZG.MOVE_EVENT, NCAL.TIMEZONE, NFO.MIND_MAP, NFO.FOLDER, ZG.SEND_EVENT, NFO.CURSOR, NCAL.FREEBUSY, NFO.MEDIA, ZG.DELETE_EVENT, ZG.RECEIVE_EVENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMM.MOVIE;
description = "A Movie";
display_name = "movie";
parents = { NFO.VIDEO };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMM.MUSIC_ALBUM;
description = "The music album as provided by the publisher. Not to be confused with media lists or collections.";
display_name = "music album";
parents = { NFO.MEDIA_LIST };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMM.MUSIC_PIECE;
description = "Used to assign music-specific properties such a BPM to video and audio";
display_name = "music";
parents = { NFO.AUDIO };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMM.TVSERIES;
description = "A TV Series has multiple seasons and episodes";
display_name = "tv series";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMM.TVSHOW;
description = "A TV Show";
display_name = "tv show";
parents = { NFO.VIDEO };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.EMAIL;
description = "An email.";
display_name = "Email";
parents = { NMO.MESSAGE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.IMMESSAGE;
description = "A message sent with Instant Messaging software.";
display_name = "IMMessage";
parents = { NMO.MESSAGE };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.MAILBOX;
description = "A mailbox - container for MailboxDataObjects.";
display_name = "Mailbox";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.MAILBOX_DATA_OBJECT;
description = "An entity encountered in a mailbox. Most common interpretations for such an entity include Message or Folder";
display_name = "MailboxDataObject";
parents = { NIE.DATA_OBJECT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.MESSAGE;
description = "A message. Could be an email, instant messanging message, SMS message etc.";
display_name = "Message";
parents = { NIE.INFORMATION_ELEMENT };
children = { NMO.EMAIL, NMO.IMMESSAGE };
all_children = { NMO.EMAIL, NMO.IMMESSAGE };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.NMO.MIME_ENTITY;
description = "A MIME entity, as defined in RFC2045, Section 2.4.";
display_name = "MimeEntity";
parents = { NIE.INFORMATION_ELEMENT };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.ACCEPT_EVENT;
description = "Event triggered when the user accepts a request of some sort. Examples could be answering a phone call, accepting a file transfer, or accepting a friendship request over an IM protocol. See also DenyEvent for when the user denies a similar request";
display_name = "ACCEPT_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.ACCESS_EVENT;
description = "Event triggered by opening, accessing, or starting a resource. Most zg:AccessEvents will have an accompanying zg:LeaveEvent, but this need not always be the case";
display_name = "ACCESS_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.CREATE_EVENT;
description = "Event type triggered when an item is created";
display_name = "CREATE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.DELETE_EVENT;
description = "Event triggered because a resource has been deleted or otherwise made permanently unavailable. Fx. when deleting a file. FIXME: How about when moving to trash?";
display_name = "DELETE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.DENY_EVENT;
description = "Event triggered when the user denies a request of some sort. Examples could be rejecting a phone call, rejecting a file transfer, or denying a friendship request over an IM protocol. See also AcceptEvent for the converse event type";
display_name = "DENY_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.EVENT_INTERPRETATION;
description = "Base class for event interpretations. Please do no instantiate directly, but use one of the sub classes. The interpretation of an event describes 'what happened' - fx. 'something was created' or 'something was accessed'";
display_name = "EVENT_INTERPRETATION";
parents = { NIE.INFORMATION_ELEMENT };
children = { ZG.DENY_EVENT, ZG.ACCESS_EVENT, ZG.EXPIRE_EVENT, ZG.LEAVE_EVENT, ZG.CREATE_EVENT, ZG.MOVE_EVENT, ZG.ACCEPT_EVENT, ZG.SEND_EVENT, ZG.MODIFY_EVENT, ZG.DELETE_EVENT, ZG.RECEIVE_EVENT };
all_children = { ZG.DENY_EVENT, ZG.ACCESS_EVENT, ZG.EXPIRE_EVENT, ZG.LEAVE_EVENT, ZG.CREATE_EVENT, ZG.MOVE_EVENT, ZG.ACCEPT_EVENT, ZG.SEND_EVENT, ZG.MODIFY_EVENT, ZG.DELETE_EVENT, ZG.RECEIVE_EVENT };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.EVENT_MANIFESTATION;
description = "Base class for event manifestation types. Please do no instantiate directly, but use one of the sub classes. The manifestation of an event describes 'how it happened'. Fx. 'the user did this' or 'the system notified the user'";
display_name = "EVENT_MANIFESTATION";
parents = { NIE.DATA_OBJECT };
children = { ZG.USER_ACTIVITY, ZG.WORLD_ACTIVITY, ZG.HEURISTIC_ACTIVITY, ZG.SCHEDULED_ACTIVITY, ZG.SYSTEM_NOTIFICATION };
all_children = { ZG.USER_ACTIVITY, ZG.SYSTEM_NOTIFICATION, ZG.HEURISTIC_ACTIVITY, ZG.SCHEDULED_ACTIVITY, ZG.WORLD_ACTIVITY };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.EXPIRE_EVENT;
description = "Event triggered when something expires or times out. These types of events are normally not triggered by the user, but by the operating system or some external party. Examples are a recurring calendar item or task deadline that expires or a when the user fails to respond to an external request such as a phone call";
display_name = "EXPIRE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.HEURISTIC_ACTIVITY;
description = "An event that is caused indirectly from user activity or deducted via analysis of other events. Fx. if an algorithm divides a user workflow into disjoint 'projects' based on temporal analysis it could insert heuristic events when the user changed project";
display_name = "HEURISTIC_ACTIVITY";
parents = { ZG.EVENT_MANIFESTATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.LEAVE_EVENT;
description = "Event triggered by closing, leaving, or stopping a resource. Most zg:LeaveEvents will be following a zg:Access event, but this need not always be the case";
display_name = "LEAVE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.MODIFY_EVENT;
description = "Event triggered by modifying an existing resources. Fx. when editing and saving a file on disk or correcting a typo in the name of a contact";
display_name = "MODIFY_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.MOVE_EVENT;
description = "Event triggered when a resource has been moved from a location to another. Fx. moving a file from a folder to another.";
display_name = "MOVE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.RECEIVE_EVENT;
description = "Event triggered when something is received from an external party. The event manifestation must be set according to the world view of the receiving party. Most often the item that is being received will be some sort of message - an email, instant message, or broadcasted media such as micro blogging";
display_name = "RECEIVE_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.SCHEDULED_ACTIVITY;
description = "An event that was directly triggered by some user initiated sequence of actions. For example a music player automatically changing to the next song in a playlist";
display_name = "SCHEDULED_ACTIVITY";
parents = { ZG.EVENT_MANIFESTATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.SEND_EVENT;
description = "Event triggered when something is send to an external party. The event manifestation must be set according to the world view of the sending party. Most often the item that is being send will be some sort of message - an email, instant message, or broadcasted media such as micro blogging";
display_name = "SEND_EVENT";
parents = { ZG.EVENT_INTERPRETATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.SYSTEM_NOTIFICATION;
description = "An event send to the user by the operating system. Examples could include when the user inserts a USB stick or when the system warns that the hard disk is full";
display_name = "SYSTEM_NOTIFICATION";
parents = { ZG.EVENT_MANIFESTATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.USER_ACTIVITY;
description = "An event that was actively performed by the user. For example saving or opening a file by clicking on it in the file manager";
display_name = "USER_ACTIVITY";
parents = { ZG.EVENT_MANIFESTATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
uri = Zeitgeist.ZG.WORLD_ACTIVITY;
description = "An event that was performed by an entity, usually human or organization, other than the user. An example could be logging the activities of other people in a team";
display_name = "WORLD_ACTIVITY";
parents = { ZG.EVENT_MANIFESTATION };
children = { };
all_children = { };
Symbol.Info.register (uri, display_name, description, parents, children, all_children);
}
}
private class Symbol.Info
{
public List<string> parents;
public List<string> children;
public List<string> all_children;
public string uri;
public string display_name;
public string description;
private Info (string uri, string display_name, string description,
string[] parents, string[] children, string[] all_children)
{
this.uri = uri;
this.display_name = display_name;
this.description = description;
this.parents = new List<string> ();
for (int i = 0; i < parents.length; i++)
this.parents.append (parents[i]);
this.children = new List<string> ();
for (int i = 0; i < children.length; i++)
this.children.append (children[i]);
this.all_children = new List<string> ();
for (int i = 0; i < all_children.length; i++)
this.all_children.append (all_children[i]);
}
internal static void register (string uri, string display_name,
string description, string[] parents, string[] children,
string[] all_children)
{
if (all_symbols == null)
all_symbols = new HashTable<string, Info> (str_hash, str_equal);
Info symbol = new Info (uri, display_name, description,
parents, children, all_children);
all_symbols.insert (uri, symbol);
}
}
}
// vim:expandtab:ts=4:sw=4
|