This repository has been archived by the owner on Jan 17, 2018. It is now read-only.
forked from ontologyportal/sumo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ComputerInput.kif
2548 lines (2066 loc) · 127 KB
/
ComputerInput.kif
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
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;; Access to and use of these products is governed by the GNU General Public
;; License <http://www.gnu.org/copyleft/gpl.html>.
;; By using these products, you agree to be bound by the terms
;; of the GPL.
;; We ask that people using or referencing this work cite our primary paper and book:
;; Niles, I., and Pease, A. 2001. Towards a Standard Upper Ontology. In
;; Proceedings of the 2nd International Conference on Formal Ontology in
;; Information Systems (FOIS-2001), Chris Welty and Barry Smith, eds,
;; Ogunquit, Maine, October 17-19, 2001. See also http://www.ontologyportal.org
;; Pease, A., (2011). Ontology: A Practical Guide. Articulate Software Press,
;; Angwin, CA. ISBN 978-1-889455-10-5.
(instance contraryAttributeWRT TernaryPredicate)
(domain contraryAttributeWRT 1 Attribute)
(domain contraryAttributeWRT 2 Attribute)
(domain contraryAttributeWRT 3 BinaryPredicate)
(documentation contraryAttributeWRT EnglishLanguage "(contraryAttributeWRT ?ATT1 ?ATT2 ?ATTPRED) means that nothing can have both attributes at the same time using the attribute predicate ?ATTPRED.")
; can we express this?:
; only subrelations of &%attribute may be the third argument to &%contraryAttributeWRT:
; (condition
; (contraryAttributeWRT ?ATT1 ?ATT2 ?PRED)
; (subrelation ?PRED attribute))
; can we express this?:
; only instances of the domain of the third argument to &%contraryAttributeWRT
; are allowed as the first and second argument:
; (condition
; (and
; (contraryAttributeWRT ?ATT1 ?ATT2 ?PRED)
; (domain ?PRED 2 ?ATT_TYPE))
; (and
; (instance ?ATT1 ?ATT_TYPE)
; (instance ?ATT2 ?ATT_TYPE)))
; nothing can have two attributes using the same predicate simultaneously
; if they are disjoint with respect to that predicate
(=>
(and
(instance ?ATT1 Attribute)
(instance ?ATT2 Attribute)
(subrelation ?PRED attribute))
(not
(and
(contraryAttributeWRT ?ATT1 ?ATT2 ?PRED)
(?PRED ?ENTITY ?ATT1)
(?PRED ?ENTITY ?ATT2))))
; would it be more efficient to further restrict the attributes?:
; (=>
; (and
; (subrelation ?PRED attribute)
; (domain ?PRED 2 ?ATT_TYPE)
; (instance ?ATT1 ?ATT_TYPE)
; (instance ?ATT2 ?ATT_TYPE))
; (not
; (and
; (contraryAttributeWRT ?ATT1 ?ATT2 ?PRED)
; (?PRED ?ENTITY ?ATT1)
; (?PRED ?ENTITY ?ATT2))))
(instance havePartTypes BinaryPredicate)
(instance havePartTypes SpatialRelation)
(domainSubclass havePartTypes 1 Object)
(domainSubclass havePartTypes 2 Object)
(relatedInternalConcept havePartTypes part)
(documentation havePartTypes EnglishLanguage "(havePartTypes ?WHOLE_TYPE ?PART_TYPE) means that every instance of ?WHOLE_TYPE has as &%parts an instance of ?PART_TYPE.")
; (havePartTypes ?WHOLE_TYPE ?PART_TYPE) means that every instance of ?WHOLE_TYPE
; has as &%parts at least one instance of ?PART_TYPE:
(=>
(and
(havePartTypes ?WHOLE_TYPE ?PART_TYPE)
(instance ?WHOLE ?WHOLE_TYPE))
(exists (?PART)
(and
(instance ?PART ?PART_TYPE)
(part ?PART ?WHOLE))))
(instance partTypes BinaryPredicate)
(domainSubclass partTypes 1 Object)
(domainSubclass partTypes 2 Object)
(subrelation partTypes typicalPart)
(relatedInternalConcept partTypes part)
(documentation partTypes EnglishLanguage "(partTypes ?PART_TYPE ?WHOLE_TYPE) means that every instance of ?PART_TYPE is &%parts of an instance of ?WHOLE_TYPE.")
; (partTypes ?PART_TYPE ?WHOLE_TYPE) means that every instance of ?PART_TYPE
; is &%parts of an instance of ?WHOLE_TYPE.
(=>
(and
(partTypes ?PART_TYPE ?WHOLE_TYPE)
(instance ?PART ?PART_TYPE))
(exists (?WHOLE)
(and
(instance ?WHOLE ?WHOLE_TYPE)
(part ?PART ?WHOLE))))
(instance classIntersection TernaryPredicate)
(domain classIntersection 1 SetOrClass)
(domain classIntersection 2 SetOrClass)
(domain classIntersection 3 SetOrClass)
(documentation classIntersection EnglishLanguage "(classIntersection ?CLASS1 ?CLASS2 ?INT_CLASS) means that ?INT_CLASS is the intersection of the two classes, ?CLASS1 and ?CLASS2. This means that every instance of ?CLASS1 that is also an instance of ?CLASS2 is an instance of ?INT_CLASS and that every instance of ?INT_CLASS is an instance of both ?CLASS1 and ?CLASS2.")
; the intersection is a subclass of each of the two intersecting classes:
(=>
(classIntersection ?CLASS1 ?CLASS2 ?INTERSECT)
(and
(subclass ?INTERSECT ?CLASS1)
(subclass ?INTERSECT ?CLASS2)))
; every item that is an instance of both classes is an instance of the intersecction:
(=>
(and
(classIntersection ?CLASS1 ?CLASS2 ?INTERSECT)
(instance ?ITEM ?CLASS1)
(instance ?ITEM ?CLASS2))
(instance ?ITEM ?INTERSECT))
; ===============
(subclass GuidingMotion Guiding)
(documentation GuidingMotion EnglishLanguage "Controlling the motion (direction, trajectory, and/or speed) of an &%Object.")
(=>
(instance ?GUIDE GuidingMotion)
(exists (?MOTION)
(and
(subProcess ?MOTION ?GUIDE)
(instance ?MOTION Motion))))
(=>
(instance ?GUIDE GuidingMotion)
(exists (?MOVED)
(and
(patient ?GUIDE ?MOVED)
(instance ?MOVED Object))))
(=>
(and
(instance ?GUIDE GuidingMotion)
(patient ?GUIDE ?MOVED)
(subProcess ?MOTION ?GUIDE)
(instance ?MOTION Motion))
(patient ?MOTION ?MOVED))
(=>
(and
(instance ?GUIDE GuidingMotion)
(subProcess ?MOTION ?GUIDE)
(instance ?MOTION Motion)
(patient ?MOTION ?MOVED))
(patient ?GUIDE ?MOVED))
(subclass PhysicalGuiding Guiding)
(documentation PhysicalGuiding EnglishLanguage "Controlling the motion (direction, trajectory, and/or speed) of a &%CorpuscularObject.")
(=>
(instance ?PGUIDE PhysicalGuiding)
(exists (?MOVED)
(and
(patient ?PGUIDE ?MOVED)
(instance ?MOVED CorpuscularObject))))
; ===============
(instance shape BinaryPredicate)
(subrelation shape property)
(domain shape 1 Physical)
(domain shape 2 ShapeAttribute)
(documentation shape EnglishLanguage"(shape ?OBJECT ?SHAPE) means that the shape of ?OBJECT is ?SHAPE.")
; If a &%Physical object has a property which is an instance of &%ShapeAttribute,
; then that object has that shape:
(=>
(and
(property ?OBJ ?SHAPE)
(instance ?OBJ Physical)
(instance ?SHAPE ShapeAttribute))
(shape ?OBJ ?SHAPE))
(instance Round ShapeAttribute)
(documentation Round EnglishLanguage"The attribute of being round in at least two dimensions.")
(instance Elliptical ShapeAttribute)
(subAttribute Elliptical Round)
(documentation Elliptical EnglishLanguage"The attribute of being elliptical or oval in at least two dimensions.")
(=>
(instance ?SHAPE Oval)
(shape ?SHAPE Elliptical))
(instance Circular ShapeAttribute)
(subAttribute Circular Elliptical)
(documentation Circular EnglishLanguage"The attribute of being circular in at least two dimensions.")
(=>
(instance ?SHAPE Circle)
(shape ?SHAPE Circular))
(instance DiskShaped ShapeAttribute)
(documentation DiskShaped EnglishLanguage"The attribute of being circular in one dimension and flat in the other.")
(subAttribute DiskShaped Circular)
(subAttribute DiskShaped Flat)
(instance Spherical ShapeAttribute)
(documentation Spherical EnglishLanguage"The attribute of being spherical: circular in three dimensions.")
(contraryAttribute Spherical Flat)
(subAttribute Spherical Round)
(=>
(instance ?SHAPE Sphere)
(shape ?SHAPE Spherical))
(subclass SphericalObject Object)
(documentation SphericalObject EnglishLanguage"An object with the attribute of being spherical.")
(=>
(instance ?SPHERE SphericalObject)
(shape ?SHAPE Spherical))
(instance Cylindrical ShapeAttribute)
(subAttribute Cylindrical Round)
(documentation Cylindrical EnglishLanguage"The attribute of being cylindrical: having a circular cross section of roughly the same size throughout its length. A cylindrical object may be hollow or solid.")
(contraryAttribute Cylindrical Flat)
(contraryAttribute Cylindrical Spherical)
(=>
(instance ?SHAPE Cylinder)
(shape ?SHAPE Cylindrical))
(instance Polygonal ShapeAttribute)
(documentation Polygonal EnglishLanguage"The attribute of being flat with a boundary consisting of straight lines.")
(contraryAttribute Polygonal Round)
(=>
(instance ?SHAPE Polygon)
(shape ?SHAPE Polygonal))
(instance Triangular ShapeAttribute)
(documentation Triangular EnglishLanguage"The attribute of being polygonal with a boundary consisting of three straight lines.")
(subAttribute Triangular Polygonal)
(=>
(instance ?SHAPE Triangle)
(shape ?SHAPE Triangular))
(instance QuadrilateralShaped ShapeAttribute)
(subAttribute QuadrilateralShaped Polygonal)
(documentation QuadrilateralShaped EnglishLanguage"The attribute of being polygonal with a boundary consisting of four straight lines.")
(contraryAttribute QuadrilateralShaped Triangular)
(=>
(instance ?SHAPE Quadrilateral)
(shape ?SHAPE QuadrilateralShaped ))
(instance Rectangular ShapeAttribute)
(subAttribute Rectangular QuadrilateralShaped)
(documentation Rectangular EnglishLanguage"The attribute of being polygonal with a boundary consisting of four mutually perpendicular straight lines.")
(=>
(instance ?SHAPE Rectangle)
(shape ?SHAPE Rectangular))
(instance SquareShaped ShapeAttribute)
(subAttribute SquareShaped Rectangular)
(documentation SquareShaped EnglishLanguage"The attribute of being polygonal with a boundary consisting of four mutually perpendicular straight lines of equal lengths.")
(=>
(instance ?SHAPE Square)
(shape ?SHAPE SquareShaped))
; =========================================================
(subclass Keyboard Device)
(documentation Keyboard EnglishLanguage "A &%Keyboard has a set of keys for typing on to transmit data corresponding to those keys or to cause physical marking of the selected keys on paper or some other surface.")
(subclass ComputerIODevice ComputerOutputDevice)
(subclass ComputerIODevice ComputerInputDevice)
(documentation ComputerIODevice EnglishLanguage "A &%ComputerIODevice is both a &%ComputerInputDevice and a &%ComputerOutputDevice.")
(subclass ComputerTerminal ComputerIODevice)
;; It is already defined as a ComputerOutputDevice.
(documentation ComputerTerminal EnglishLanguage "An interactive combination &%ComputerInputDevice and &%ComputerOutputDevice that does not have an internal computer. The input device sends (normally) characters input by the user and the output device relays output to the user. Early computer terminals output text to paper; terminals for sight disadvantaged people may provide audio or tactile output to the user, but most terminals around the turn of the 21st Century display text and/or images on a display device. Traditional computer terminals have given way to personal computers with separate keyboards and screens or to laptop and tablet computers which operate with an internal computer.
A &%ComputerTerminal is contrasted with a &%Printer, which is an output only device which does not output directly in view of the user and which only makes hardcopies of computer output by altering the surface of the hard copy in a way that is for practical purposes, permanent.")
(subclass ComputerDisplay ComputerOutputDevice)
(subclass ComputerDisplay DataDisplayDevice)
(documentation ComputerDisplay EnglishLanguage "A &%ComputerOutputDevice for displaying information on some sort of screen or other reusable visible output surface. This is contrasted with a &%Printer, which places a substance on a surface that is for practical purposes, permanent. A display may be part of a computer, a computer terminal, or a separate device. A single computer may be connected to multiple displays, either all remote, or one physically part of the computer and the other(s) remote.")
(disjoint ComputerDisplay Printer)
(instance displayedUpon BinaryPredicate)
(domain displayedUpon 1 Image)
(domain displayedUpon 2 ComputerDisplay)
(documentation displayedUpon EnglishLanguage "(displayedUpon ?IMAGE ?DISPLAY) means that the image, ?IMAGE is displayed upon the &%ComputerDisplay, ?DISPLAY. A computer connected to multiple &%ComputerDisplays can have the same images displayed upon more than one display, or have them restricted to a single display.")
(subclass ComputerScreen ComputerDisplay)
(documentation ComputerScreen EnglishLanguage "A &%ComputerDisplay for displaying information on some sort of screen.")
(=>
(instance ?SCREEN ComputerScreen)
(shape ?SCREEN Rectangular))
(subclass ComputerKeyboard_Generic ComputerInputDevice)
(documentation ComputerKeyboard EnglishLanguage "A &%ComputerInputDevice for accepting typed input. This could be a keyboard with a typewriter layout, a cell phone keypad or any other similar device. It could be a keyboard displayed upon a &%ComputerScreen or be a physical &%Keyboard.")
(subclass ComputerInputButton ComputerInputDevice)
(documentation ComputerInputButton EnglishLanguage "A physical &%ComputerInputDevice such that pushing the button down, pushing it down twice quickly, and/or holding it down causes a signal to be sent to a computer (if everything necessary is turned on and connected). This could be a key on a keyboard, mouse, telephone, ATM, or other piece of equipment.")
(subclass MouseButton ComputerInputButton)
(documentation MouseButton EnglishLanguage "A &%ComputerInputButton on a &%ComputerMouse.")
(subclass PhysicalRightCIButton ComputerInputButton)
(documentation PhysicalRightCIButton EnglishLanguage "A &%ComputerInputButton physically on the right side of a set of &%ComputerInputButtons. A computer system may be told to logically switch the right and left buttons (e.g., for a person who uses a mouse in the left hand -- in such a case, the &%LeftCIButton is the &%PhysicalRightCIButton).")
(subclass PhysicalLeftCIButton ComputerInputButton)
(documentation PhysicalLeftCIButton EnglishLanguage "A &%ComputerInputButton physically on the left side of a set of &%ComputerInputButtons. A computer system may be told to logically switch the right and left buttons (e.g., for a person who uses a mouse in the left hand -- in such a case, the &%RightCIButton is the &%PhysicalLeftCIButton).")
(subclass RightCIButton ComputerInputButton)
(documentation RightCIButton EnglishLanguage "A &%ComputerInputButton logically on the right side of a set of &%ComputerInputButtons. Normally, the &%PhysicalRightCIButton. A computer system may be told to logically switch the right and left buttons (e.g., for a person who uses a mouse in the left hand -- in such a case, the &%RightCIButton is the leftmost physical button.")
(subclass LeftCIButton ComputerInputButton)
(documentation LeftCIButton EnglishLanguage "A &%ComputerInputButton logically on the left side of a set of &%ComputerInputButtons. Normally, the &%PhysicalLeftCIButton. A computer system may be told to logically switch the right and left buttons (e.g., for a person who uses a mouse in the left hand -- in such a case, the &%LeftCIButton is the rightmost physical button.")
(disjoint RightCIButton LeftCIButton)
(=>
(and
(instance ?RIGHT PhysicalRightCIButton)
(component ?RIGHT ?DEV)
(instance ?DEV ComputerInputDevice))
(exists (?LEFT)
(and
(instance ?LEFT PhysicalLeftCIButton)
(component ?LEFT ?DEV)
(orientation ?RIGHT ?LEFT Left))))
(subclass MiddleCIButton ComputerInputButton)
(documentation RightCIButton EnglishLanguage "A &%ComputerInputButton in the middle of a row of three &%ComputerInputButtons.")
(disjoint RightCIButton MiddleCIButton)
(disjoint MiddleCIButton LeftCIButton)
; If a device has a &%MiddleCIButton, then it has a &%RightCIButton oriented to its
; right and a &%LeftCIButton oriented to its left:
(=>
(and
(instance ?MID MiddleCIButton)
(component ?MID ?DEV)
(instance ?DEV ComputerInputDevice))
(exists (?LEFT ?RIGHT)
(and
(instance ?RIGHT RightCIButton)
(instance ?LEFT LeftCIButton)
(component ?RIGHT ?DEV)
(component ?LEFT ?DEV)
(between ?LEFT ?MID ?RIGHT)
(orientation ?MID ?LEFT Left)
(orientation ?MID ?RIGHT Right))))
(subclass ComputerKeyboardKey ComputerInputButton)
(documentation ComputerKeyboardKey EnglishLanguage "A &%ComputerInputButton on a &%ComputerKeyboard.")
(disjoint ComputerKeyboardKey RightCIButton)
(disjoint ComputerKeyboardKey MiddleCIButton)
(disjoint ComputerKeyboardKey LeftCIButton)
(disjoint ComputerKeyboardKey MouseButton)
; every Computer Keyboard Key is typically part of a Computer Keyboard
(typicalPart ComputerKeyboardKey ComputerKeyboard-Generic)
; every Computer Keyboard Key is part of no more than one Computer Keyboard
(=>
(and
(instance ?KEY ComputerKeyboardKey)
(instance ?KEYBOARD1 ComputerKeyboard-Generic)
(component ?KEY ?KEYBOARD1)
(instance ?KEYBOARD2 ComputerKeyboard-Generic)
(component ?KEY ?KEYBOARD2))
(equal ?KEYBOARD1 ?KEYBOARD2))
; every Computer Keyboard has a Computer Keyboard Key as a component
(=>
(instance ?KEYBOARD ComputerKeyboard-Generic)
(exists (?KEY)
(and
(instance ?KEY ComputerKeyboardKey)
(component ?KEY ?KEYBOARD))))
(subclass CharacterKey ComputerKeyboardKey)
(documentation CharacterKey EnglishLanguage "A &%CharacterKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard that sends a single (printable or whitespace) character to a computer to which it is attached.")
(subclass SpecialComputerKeyboardKey ComputerKeyboardKey)
(documentation SpecialComputerKeyboardKey EnglishLanguage "A &%SpecialComputerKeyboardKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard that does not send a single character to a computer to which it is attached. This includes the Enter/Return key, backspace, delete, function, control, shift, and other non-character keys.")
(disjoint SpecialComputerKeyboardKey CharacterKey)
(subclass EnterKey SpecialComputerKeyboardKey)
(documentation EnterKey EnglishLanguage "An &%EnterKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard often labeled Enter or Return which sends a ^L (newline) and/or ^M (return) to a computer to which it is attached." )
(subclass ArrowKey SpecialComputerKeyboardKey)
(documentation ArrowKey EnglishLanguage "An &%ArrowKey is a type of &%ComputerKeyboardKey on a &%ComputerKeypad with a right, left, up, or down graphic.")
(disjoint ArrowKey EnterKey)
(subclass RightArrowKey ArrowKey)
(documentation RightArrowKey EnglishLanguage "A &%RightArrowKey is a type of &%ArrowKey on a &%ComputerKeypad with a right pointing graphic.")
(subclass LeftArrowKey ArrowKey)
(documentation LeftArrowKey EnglishLanguage "A &%LeftArrowKey is a type of &%ArrowKey on a &%ComputerKeypad with a left pointing graphic.")
(disjoint LeftArrowKey RightArrowKey)
(subclass UpArrowKey ArrowKey)
(documentation UpArrowKey EnglishLanguage "A &%UpArrowKey is a type of &%ArrowKey on a &%ComputerKeypad with a upward pointing graphic." )
(disjoint UpArrowKey LeftArrowKey)
(disjoint UpArrowKey RightArrowKey)
(subclass DownArrowKey ArrowKey)
(documentation DownArrowKey EnglishLanguage "A &%DownArrowKey is a type of &%ArrowKey on a &%ComputerKeypad with a downward pointing graphic.")
(disjoint DownArrowKey RightArrowKey)
(disjoint DownArrowKey LeftArrowKey)
(disjoint UpArrowKey DownArrowKey)
(subclass NumberedFunctionKey SpecialComputerKeyboardKey)
(documentation NumberedFunctionKey EnglishLanguage "A &%NumberedFunctionKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard that does not send a single character to a computer to which it is attached. A &%ComputerKeyboard either has no &%NumberedFunctionKey or more than one &%NumberedFunctionKey.")
(disjoint NumberedFunctionKey EnterKey)
(disjoint NumberedFunctionKey ArrowKey)
(subclass MultiKeypressKey SpecialComputerKeyboardKey)
(documentation MultiKeypressKey EnglishLanguage "A &%MultiKeypressKey is a type of &%ComputerKeyboardKey (including &%ShiftKey, &%ControlKey, and &%AltKey) which is not intended to send a character from the keyboard when it is pressed, but to cause a different character (or set of characters) to be sent from a keyboard when another key is pressed while it is being held down.")
(disjoint MultiKeypressKey NumberedFunctionKey)
(disjoint MultiKeypressKey EnterKey)
(disjoint MultiKeypressKey ArrowKey)
(subclass FunctionKey MultiKeypressKey)
(documentation FunctionKey EnglishLanguage "A &%FunctionKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard may be labeled ``Fn''. It acts similar to a &%ShiftKey, &%ControlKey, or &%AltKey to cause a different character (or set of characters) to be sent from a keyboard when another key is pressed.")
(subclass ShiftKey MultiKeypressKey)
(documentation ShiftKey EnglishLanguage "A &%ShiftKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard often labeled ``Shift'' which affects the output of other keys if typed while it is being held down.")
(disjoint ShiftKey FunctionKey)
(subclass ControlKey MultiKeypressKey)
(documentation ControlKey EnglishLanguage "A &%ControlKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard often labeled ``Ctrl'' which affects the output of other keys if typed while it is being held down.")
(disjoint ControlKey ShiftKey)
(disjoint ControlKey FunctionKey)
(subclass AltKey MultiKeypressKey)
(documentation AltKey EnglishLanguage "An &%AltKey is a type of &%ComputerKeyboardKey on a &%ComputerKeyboard often labeled ``Shift'' which affects the output of other keys if typed while it is being held down.")
(disjoint AltKey ControlKey)
(disjoint AltKey ShiftKey)
(disjoint AltKey FunctionKey)
(subclass TouchpadKey ComputerInputButton)
(documentation TouchpadKey EnglishLanguage "A &%ComputerInputButton on a &%ComputerTouchpad. A touchpad key may be a &%RightCIButton, &%LeftCIButton, or &%MiddleCIButton.")
(disjoint ComputerKeyboardKey TouchpadKey)
(subclass ComputerKeyboard ComputerKeyboard_Generic)
(subclass ComputerKeyboard Keyboard)
(documentation ComputerKeyboard EnglishLanguage "A physical (as opposed to displayed) &%ComputerInputDevice for accepting typed input with a typewriter layout. A &%ComputerKeyboard may have additional keys and arrays of keys that are not on a typewriter keyboard.")
(hasPartTypes ComputerKeyboard ComputerKeyboardKey)
(subclass ComputerKeypad ComputerKeyboard_Generic)
(documentation ComputerKeypad EnglishLanguage "A &%ComputerKeyboard_Generic that does not have a typewriter layout.")
(disjoint ComputerKeypad ComputerKeyboard_Generic)
; ===========
(subclass ComputerMouse ComputerInputDevice)
(documentation ComputerMouse EnglishLanguage "A &%ComputerInputDevice that fits in a person's hand for accepting point and click input on a 2D surface. A computer mouse has one or more buttons and may have a &%ScrollWheel as well. A mouse may be connected to a computer by a power and signalling cable or may have a wireless connection.")
(disjoint ComputerMouse ComputerKeyboard)
(hasPartTypes ComputerMouse MouseButton)
(typicalPart MouseButton ComputerMouse)
(subclass ScrollWheel ComputerInputDevice)
(documentation ScrollWheel EnglishLanguage "A &%ComputerInputDevice that consists of a wheel that projects perpendicularly out of a surface. A &%ComputerUser may rotate it in either direction with a finger. &%ScrollWheels are often part of &%ComputerMouses.")
(disjoint ScrollWheel ComputerKeyboard_Generic)
(disjoint ScrollWheel ComputerMouse)
(subclass TouchSensitiveComputerInputDevice ComputerInputDevice)
(documentation TouchSensitiveComputerInputDevice EnglishLanguage "A touch-sensitive &%ComputerInputDevice for accepting point and click input on a 2D surface. The device is operated by moving (normally) a finger across the surface of the device. Clicking may be achieved by clicking on an adjacent button or by tapping the surface. Two basic types of &%TouchSensitiveComputerInputDevices are &%ComputerTouchpad and &%TouchScreen.")
(disjoint TouchSensitiveComputerInputDevice ComputerMouse)
(disjoint TouchSensitiveComputerInputDevice ComputerKeyboard)
(disjoint TouchSensitiveComputerInputDevice ScrollWheel)
(subclass ComputerTouchpad TouchSensitiveComputerInputDevice )
(documentation ComputerTouchpad EnglishLanguage "A touch-sensitive &%ComputerInputDevice for accepting point and click input on a 2D surface. The device is operated by moving (normally) a finger across the surface of the device. Clicking may be achieved by clicking on an adjacent button or by tapping the surface.")
(disjoint ComputerScreen ComputerTouchpad)
(subclass ComputerTouchscreen TouchSensitiveComputerInputDevice)
(subclass ComputerTouchscreen ComputerScreen)
(classIntersection ComputerScreen TouchSensitiveComputerInputDevice
ComputerTouchscreen)
(documentation ComputerTouchscreen EnglishLanguage "A touch-sensitive &%ComputerScreen for accepting point and click input on its display surface. The device is operated by moving (normally) a finger across the surface of the device. Clicking is achieved by tapping the surface. Multi-finger gestures may have other effects.")
(subclass ComputerTouchscreenKeyboard ComputerTouchscreen)
(subclass ComputerTouchscreenKeyboard Icon)
(subclass ComputerTouchscreenKeyboard Image)
(subclass ComputerTouchscreenKeyboard ComputerKeyboard_Generic)
(classIntersection ComputerKeyboard TouchSensitiveComputerInputDevice
ComputerTouchscreenKeyboard)
(documentation ComputerTouchscreenKeyboard EnglishLanguage "A portion of a &%ComputerTouchscreen which displays a keyboard and acts as a keyboard, accepting taps on the key images as if the keys were typed.")
(=>
(instance ?KEYBOARD ComputerTouchscreenKeyboard )
(exists (?SCREEN)
(and
(instance ?SCREEN ComputerTouchscreen )
(displayedUpon ?KEYBOARD ?SCREEN))))
(subclass ComputerTouchscreenKeypad ComputerTouchscreenKeyboard)
(subclass ComputerTouchscreenKeypad ComputerKeypad)
(classIntersection ComputerKeypad ComputerTouchscreen ComputerTouchscreenKeypad)
(documentation ComputerTouchscreenKeypad EnglishLanguage "A portion of a &%ComputerTouchscreen which displays a keyboard and acts as a keyboard, accepting taps on the key images as if the keys were typed.")
; ===
(subclass SpeakerDevice Device)
(documentation SpeakerDevice EnglishLanguage "A &%Device for projecting sound into a medium.")
(=>
(instance ?SPEAKER SpeakerDevice)
(capability RadiatingSound instrument ?SPEAKER))
(subclass ElectricSpeakerDevice SpeakerDevice)
(subclass ElectricSpeakerDevice ElectricDevice)
(documentation ElectricSpeakerDevice EnglishLanguage "A combination &%SpeakerDevice and &%ElectricDevice.")
(=>
(and
(instance ?DEV SpeakerDevice)
(instance ?DEV ElectricDevice))
(instance ?DEV ElectricSpeakerDevice))
(subclass Loudspeaker ElectricSpeakerDevice)
(documentation Loudspeaker EnglishLanguage "A &%SpeakerDevice for projecting sound through the air. A loudspeaker produces louder sound than earphones or a hearing aid.")
(subclass Earphone ElectricSpeakerDevice)
(subclass Earphone WearableItem)
(documentation Earphone EnglishLanguage "A &%WearableItem worn on the head with an &%ElectricSpeaker device located near one or both ears.")
(disjoint Earphone Loudspeaker)
(=>
(and
(instance ?EARPHONE Earphone)
(wears ?PERSON ?EARPHONE)
(instance ?HEAD Head)
(part ?HEAD ?PERSON))
(located ?EARPHONE ?HEAD))
(subclass ComputerLoudspeaker ComputerOutputDevice)
(subclass ComputerLoudspeaker Loudspeaker)
(classIntersection Loudspeaker ComputerOutputDevice ComputerLoudspeaker)
(documentation ComputerLoudspeaker EnglishLanguage "A &%Loudspeaker which is also a &%ComputerOutputDevice, whether or not it is currently connected to a computer. This includes loudspeakers that are integral to a computer component as well as ones designed to be plugged into a standard computer I/O connection.")
(=>
(and
(instance ?DEV Loudspeaker)
(instance ?DEV ComputerOutputDevice))
(instance ?DEV ComputerLoudspeaker))
(subclass InternalComputerLoudspeaker ComputerLoudspeaker)
(documentation InternalComputerLoudspeaker EnglishLanguage "A &%ComputerLoudspeaker which is internal to a computer, computer keyboard, or computer screen.")
(partTypes InternalComputerLoudspeaker ComputerHardware)
(subclass ComputerMicrophone ComputerInputDevice)
(subclass ComputerMicrophone Microphone)
(classIntersection ComputerInputDevice Microphone ComputerMicrophone)
(documentation ComputerLoudspeaker EnglishLanguage "A &%Microphone which is also a &%ComputerInputDevice, whether or not it is currently connected to a computer. This includes microphones that are integral to a computer component as well as ones designed to be plugged into a standard computer I/O connection.")
(=>
(and
(instance ?DEV Microphone)
(instance ?DEV ComputerOutputDevice))
(instance ?DEV ComputerMicrophone))
(subclass VideoCamera Camera)
(subclass VideoCamera ElectricDevice)
(documentation VideoCamera EnglishLanguage "A &%Camera for taking video images.")
(subclass Modem ComputerIODevice)
(documentation Modem EnglishLanguage "A type of ComputerIODevice and ComputerPeripheralDevice. Each Modem is a device designed to facilitate communication between computers by modulating analog signals to encode digital information, and demodulating analog signals to decode information back into digital format.")
(subclass CableModem Modem)
(documentation CableModem EnglishLanguage "A type of Modem that provides bi-directional data communication via radio frequency channels on a fiberoptic cable. Cable modems are primarily used to deliver broadband Internet access in the form of cable Internet.")
(=>
(and
(instance ?MODEM CableModem)
(instance ?COMM Communication)
(instrument ?COMM ?MODEM))
(exists (?CABLE)
(and
(instance ?CABLE CommunicationCable)
(instrument ?COMM ?CABLE)
(connectedEngineeringComponents ?CABLE ?MODEM))))
(subclass RadioModem Modem)
(documentation RadioModem EnglishLanguage "A type of Modem that provides bi-directional data communication via radio connection with a network or computer.")
(disjoint RadioModem CableModem)
(subclass ComputerHardware EngineeringComponent)
;; assertion missing from QoSontology.kif
(subclass Joystick ComputerInputDevice)
(documentation Joystick EnglishLanguage "A type of &%ComputerInputDevice with a stick that can be activated to control a cursor in the X and Y directions. A &%Joystick may or may not have an attached button for clicking.")
(subclass Trackball ComputerInputDevice)
(documentation Trackball EnglishLanguage "A type of &%ComputerInputDevice with a ball that can be rolled to control a cursor in the X and Y directions. A &%Trackball may or may not have an attached button for clicking.")
(disjoint Joystick Trackball)
(subclass GameIODevice ComputerIODevice)
(documentation GameIODevice EnglishLanguage "A type of &%ComputerIODevice designed for playing video games.")
(subclass GamePad GameIODevice)
(documentation GamePad EnglishLanguage "A type of &%GameIODevice designed being held in two hands with the fingers, including thumbs being used to control multiple buttons and possibly other input devices such as &%Joysticks.")
(subclass Accelerometer Sensor)
(subclass Accelerometer ElectricDevice)
(documentation Accelerometer EnglishLanguage "A type of &%ElectricDevice used to measure acceleration.")
(subclass GameIODeviceWithAccelerometer GameIODevice)
(documentation GameIODeviceWithAccelerometer EnglishLanguage "A type of &%GameIODevice designed to be moved in three dimensions to detect sorts of motion used in sports and other physical activities.")
(hasPartTypes GameIODeviceWithAccelerometer Accelerometer)
(=>
(and
(instance ?DEVICE GameIODevice)
(instance ?ACCELEROMETER Accelerometer)
(component ?ACCELEROMETER ?DEVICE))
(instance ?DEVICE GameIODeviceWithAccelerometer))
(subclass InternalDigitalDataStorageDevice DigitalDataStorageDevice)
(documentation InternalDigitalDataStorageDevice EnglishLanguage "A type of &%DigitalDataStorageDevice that is installed in a &%Computer and not readily removable.")
(subclass RemovableDigitalDataStorageDevice DigitalDataStorageDevice)
(documentation RemovableDigitalDataStorageDevice EnglishLanguage "A type of &%DigitalDataStorageDevice that can be temporarily installed in a computer and is readily removable.")
(disjoint InternalDigitalDataStorageDevice RemovableDigitalDataStorageDevice)
(subclass ComputerDisk DigitalDataStorageDevice)
(documentation ComputerDisk EnglishLanguage "A type of &%DigitalDataStorageDevice that is disk-shaped and is read while being spun in a &%DiskDrive.")
(=>
(instance ?DISK ComputerDisk)
(shape ?DISK DiskShaped))
(subclass HardDisk ComputerDisk)
(documentation HardDisk EnglishLanguage "A type of &%ComputerDisk that is hard, rather than floppy. The 3 1/2'' floppy disk is considered a type of &%Floppy disk even though it is hard. Hard disks can be internal to the computer, internal to an external drive, or removable.")
(subclass InternalHardDisk HardDisk)
(subclass InternalHardDisk InternalDigitalDataStorageDevice)
(documentation InternalHardDisk EnglishLanguage "A type of &%HardDisk that is installed in a &%Computer (in its &%HardDiskDrive) and is not readily removable.")
(=>
(instance ?DISK InternalHardDisk)
(exists (?DRIVE)
(and
(instance ?DRIVE InternalHardDiskDrive)
(component ?DISK ?DRIVE))))
(subclass RemovableDisk ComputerDisk)
(subclass RemovableDisk RemovableDigitalDataStorageDevice )
(documentation RemovableDisk EnglishLanguage "A type of &%ComputerDisk that can be temporarily installed in a computer (in a &%DiskDrive) and is readily removable.")
(disjoint RemovableDisk InternalHardDisk)
(subclass CartridgeHardDisk HardDisk)
(subclass CartridgeHardDisk RemovableDisk)
(documentation CartridgeHardDisk EnglishLanguage "A type of &%HardDisk that can be temporarily installed in a computer (in its &%HardDiskDrive) and is readily removable.")
(subclass FloppyDisk RemovableDisk)
(documentation FloppyDisk EnglishLanguage "A type of &%ComputerDisk that can be temporarily installed in a &%DiskDrive and is readily removable.")
(disjoint FloppyDisk HardDisk)
(subclass CompactDisc RemovableDigitalDataStorageDevice)
;CompactDisc is defined in Media.kif .
;;MSv: Different types of &%OpticalDiscs moved to Media.kif
;;(subclass CD-ROM CompactDisc)
;;(subclass CD-ROM ReadOnlyMemoryDataStorage)
;;(subclass CD-ROM ComputerDisc)
;;(subclass CD-ROM ComputerInputDevice)
;;(documentation CD-ROM EnglishLanguage "A type of &%CompactDisc that can be read but not written on.")
;;(disjoint CD-ROM ComputerOutputDevice)
;;(subclass CD-R CompactDisc)
;;(subclass CD-R WriteOnceDataStorage)
;;(subclass CD-WriteOnce ComputerDisk)
;;(subclass CD-WriteOnce ComputerIODevice)
;;(documentation CD-R EnglishLanguage "A type of &%CompactDisc that can be written on once and read from multiple times.")
;;(subclass CD-RW CompactDisc)
;;(subclass CD-RW RewritableDataStorage)
;;(subclass CD-RW ComputerDisk)
;;(subclass CD-RW ComputerIODevice)
;;(documentation CD-RW EnglishLanguage "A type of &%CompactDisc that can be written on and read from multiple times.")
;;(disjoint CD-R CD-ROM)
;;(subclass BluRayDisc OpticalDisc)
;;(documentation BluRayDisc EnglishLanguage "A type of &%CompactDisc that has significantly more storage than a &%DVD.")
;;(disjoint BluRayDisc CompactDisc)
;;(disjoint BluRayDisc DVD)
(subclass DiskDrive ComputerComponent)
;;(subclass DiskDrive DigitalDataStorageDevice )
(documentation DiskDrive EnglishLanguage "A device that can read and (often) write &%ComputerDisks.")
(instance diskTypeForDrive BinaryPredicate)
(domainSubclass diskTypeForDrive 1 ComputerDisk)
(domainSubclass diskTypeForDrive 2 DiskDrive)
(documentation diskTypeForDrive EnglishLanguage "(diskTypeForDrive ?DISK_TYPE ?DRIVE_TYPE) means that disks of type ?DISK_TYPE are designed to be used by drives of type ?DRIVE_TYPE and such drives are designed to read (and possibly write) disks of type ?DISK_TYPE.")
(subclass ExternalDiskDrive DiskDrive)
(documentation ExternalDiskDrive EnglishLanguage "A type of &%DiskDrive that can be attached to a &%Computer by a cable.")
(disjoint ExternalDiskDrive InternalHardDisk)
(subclass ExternalHardDiskDrive HardDiskDrive)
(subclass ExternalHardDiskDrive ExternalDiskDrive)
(classIntersection HardDiskDrive ExternalDiskDrive ExternalHardDiskDrive)
(documentation ExternalHardDiskDrive EnglishLanguage "A type of &%HardDiskDrive that can be attached to a &%Computer by a cable.")
(subclass DiskDriveWithRemovableDisks DiskDrive)
(documentation DiskDriveWithRemovableDisks EnglishLanguage "A type of &%DiskDrive that can have different &%ComputerDisks installed at different times. Insertion and removal of a disk are simple processes.")
(subclass CartridgeHardDiskDrive HardDiskDrive)
(subclass CartridgeHardDiskDrive DiskDriveWithRemovableDisks)
(documentation CartridgeHardDiskDrive EnglishLanguage "A type of &%HardDiskDrive that can have different &%CartridgeHardDisks at different times. Insertion and removal of a disk are simple processes.")
(diskTypeForDrive CartridgeHardDisk CartridgeHardDiskDrive)
(subclass HardDiskDrive DiskDrive)
; defined in QoSontology.kif
; (documentation HardDiskDrive EnglishLanguage "A device that can read and write &%ComputerHardDisks.")
(subclass FloppyDiskDrive DiskDriveWithRemovableDisks)
(documentation FloppyDiskDrive EnglishLanguage "A device that can read and write &%FloppyDisks.")
(diskTypeForDrive FloppyDisk FloppyDiskDrive)
(subclass OpticalDiscDrive DiskDrive)
(documentation OpticalDiscDrive EnglishLanguage "A device that can read and (in some cases) write certain kinds of &%OpticalDisc.")
(diskTypeForDrive OpticalDisk OpticalDiskDrive)
(subclass CDDrive OpticalDiscDrive)
(documentation CDDrive EnglishLanguage "A device that can read and (in some cases) write &%CompactDiscs.")
(diskTypeForDrive CompactDisc CDDrive)
(subclass DVDDrive OpticalDiscDrive)
(documentation DVDDrive EnglishLanguage "A device that can read and (in some cases) write &%DVDs.")
(diskTypeForDrive DVD DVDDrive)
(subclass BluRayDrive OpticalDiscDrive)
(documentation BluRayDrive EnglishLanguage "A device that can read and (in some cases) write &%BluRayDiscs.")
(diskTypeForDrive BluRayDisc BluRayDrive)
; =============================
(subclass SolidStateDataStorageDevice DigitalDataStorageDevice)
(documentation SolidStateDataStorageDevice EnglishLanguage "A type of &%DigitalDataStorageDevice which can be read with no moving parts.")
(subclass FlashDrive SolidStateDataStorageDevice)
(subclass FlashDrive ComputerIODevice)
(subclass FlashDrive RemovableDigitalDataStorageDevice)
(documentation SolidStateDataStorageDevice EnglishLanguage "A &%FlashDrive is removable &%SolidStateDataStorageDevice that connects to a USB port. A &%FlashDrive is alternatively called a ``USB drive'', ``USB flash drive'', ``thumb drive'', ``jump drive'', and ``pen drive''.")
(subclass MemoryCard SolidStateDataStorageDevice)
(subclass MemoryCard RemovableDigitalDataStorageDevice)
(subclass MemoryCard ComputerIODevice)
(documentation MemoryCard EnglishLanguage "A type of &%RemovableDigitalDataStorageDevice with no moving parts, that can be inserted into a camera, cell phone, computer, or similar device; written on that device; and switched to another device to be read.")
(disjoint FlashDrive MemoryCard)
(subclass Software Procedure)
(documentation Software EnglishLanguage "A set of instructions in a computer programming language that can be executed by a computer, possibly after compilation into another programming language. The term &%Software includes &%ComputerPrograms (free-standing software), object methods, subroutines and software packages.")
(subclass ComputerProgram Software)
(subclass SoftwarePackage Software)
(documentation SoftwarePackage EnglishLanguage "A &%SoftwarePackage is a set of &%ComputerPrograms and &%DataFiles that operate together to enable various &%ComputerUser activities.")
(=>
(instance ?PACK SoftwarePackage)
(exists (?PROGRAM)
(and
(instance ?PROGRAM ComputerProgram)
(part ?PROGRAM ?PACK))))
(=>
(instance ?PACK SoftwarePackage)
(exists (?FILE)
(and
(instance ?FILE ComputerFile)
(part ?FILE ?PACK))))
(subclass UserInterface Software)
(documentation UserInterface EnglishLanguage "A &%UserInterface is a piece or collection of &%Software that allows a user to interact with a computer system or program.")
(subclass GraphicalUserInterface UserInterface)
(documentation GraphicalUserInterface EnglishLanguage "A &%GraphicalUserInterface is a &%UserInterface that allows users to interact with electronic devices with images rather than text commands.")
(abbreviation "GUI" GraphicalUserInterface)
(subclass UIElement Icon)
(documentation UIElement EnglishLanguage "A &%UIElement is a feature that a user uses to interact with a &%UserInterface. The type of interaction depends upon the type of element and type of screen.")
(subclass ComputerMenu UIElement)
(documentation ComputerMenu EnglishLanguage "A &%ComputerMenu is an image generated by a computer program of a set of choices tha a user has for interacting with that program in conjunction with a method for the user to input a selection to the program.")
(instance accessableFromMenu BinaryPredicate)
(domain accessableFromMenu 1 Entity) ; !!! Narrow this down
(domain accessableFromMenu 2 ComputerMenu)
(documentation accessableFromMenu EnglishLanguage "The property &%accessableFromMenu relates a file, computer process, or submenu to a &%ComputerMenu from which the object can be accessed.")
(subclass TextualComputerMenu ComputerMenu)
(documentation TextualComputerMenu EnglishLanguage "A &%TextualComputerMenu is a &%ComputerMenu that textually describes a user's options and permits the user to select one of the options by typing the appropriate thing into the computer.")
; =====================================
(subclass GUIElement Image)
(subclass GUIElement UIElement)
(documentation GUIElement EnglishLanguage "A &%GUIElement is an image on a &%ComputerScreen that a user uses to interact with a &%GraphicalUserInterface. The type of interaction depends upon the type of element and type of screen.")
(disjoint TextualComputerMenu GUIElement)
(instance screenOfGUIE BinaryPredicate)
(domain screenOfGUIE 1 GUIElement)
(domain screenOfGUIE 2 InterfaceScreen)
(documentation screenOfGUIE EnglishLanguage "(screenOfGUIE ?GUIE ?SCREEN) means that the GUIElement, ?GUIE, is displayed on, or at least logically assigned to be displayed on the &%InterfaceScreen, ?SCREEN.")
(subclass GUIActiveArea GUIElement)
(documentation GUIActiveArea EnglishLanguage "A &%GUIActiveArea is a (normally rectangular) &%GUIElement which a user can make active (change its state to GUI_ActiveState), select, and interact with.")
(subclass ComputerTouchscreenKeypad GUIActiveArea) ; defined above
(subclass ComputerTouchscreenKeyboard GUIActiveArea) ; defined above
(subclass GraphicalComputerMenu ComputerMenu)
(subclass GraphicalComputerMenu GUIActiveArea)
(classIntersection ComputerMenu UIElement GraphicalComputerMenu)
(documentation GraphicalComputerMenu EnglishLanguage "A &%GraphicalComputerMenu is a &%ComputerMenu that displays a user's options and permits the user to select one or more of the options in a graphical manner and usually using a keyboard as well.")
(disjoint GraphicalComputerMenu ComputerTouchscreenKeypad)
(disjoint GraphicalComputerMenu ComputerTouchscreenKeyboard)
; A GraphicalComputerMenu is typically accessed by a mouse icon
; A GraphicalComputerMenu can be accessed by arrow keys.
(subclass ListBox GraphicalComputerMenu)
(documentation ListBox EnglishLanguage "A &%ListBox is a &%GraphicalComputerMenu which appears as a static list of visible values whether active or not. The whole list may or may not be visible at one time.")
(subclass DropDownList GraphicalComputerMenu)
(documentation DropDownList EnglishLanguage "A &%DropDownList is a &%GraphicalComputerMenu which appears as a single choice when inactive, but expands to a list of visible values (see &%ListBox) when made active. The whole list may or may not be visible at one time.")
(disjoint ListBox DropDownList)
(subclass ComboListTextBox GraphicalComputerMenu)
(documentation ComboListTextBox EnglishLanguage "A &%ComboListTextBox is a &%GraphicalComputerMenu which appears as a &%ListBox or a &%DropDownList, but also has a single line &%TextInputBox into which a user can type a text value not in the menu.")
; (havePartTypes ComboList TextInputBox)
(subclass GraphicalSubMenu GraphicalComputerMenu)
(documentation GraphicalSubMenu EnglishLanguage "A &%GraphicalSubMenu is a &%GraphicalComputerMenu that appears when a user either makes a &%GraphicalMenuItem the active area or selects an appropriate menu item.")
(=>
(instance ?SUB GraphicalSubMenu)
(exists (?MENU)
(and
(instance ?MENU GraphicalComputerMenu)
(accessableFromMenu ?SUB ?MENU))))
; Note that this is not unique, since the same submenu conceptually be accessed
; from multiple menus.
(subclass GUIButton GUIActiveArea)
(subclass GUIButton ComputerInputButton)
(documentation GUIButton EnglishLanguage "A &%GUIButton is an image of a button on a &%GUIElement that a user may click on or ''hold down'' to indicate a &%UserSignifiedAction. The button's graphical appearance changes once it is selected. An icon of a &%ComputerKeyboardKey is not considered to be a &%GUIButton. A &%GUIButton may have labeling text or symbol displayed on or adjacent it. The active area for selecting a GUI button may be the area of the button itself or may include the area of text labeling the box.")
(disjoint GUIButton ComputerKeyboardKey)
(disjoint GUIButton ComputerTouchscreenKeypad)
(disjoint GUIButton ComputerTouchscreenKeyboard)
(subclass GUIRadioButton GUIButton)
(documentation GUIRadioButton EnglishLanguage "A &%GUIRadioButton is a &%GUIButton in a set of buttons that stays selected when a user clicks on it. Any other button that was depressed is released when the GUI radio button is pushed.")
(subclass ScrollBar GUIActiveArea)
(documentation ScrollBar EnglishLanguage "A &%ScrollBar is an image of a slider on an &%InterfaceWindow with an indicator (&%ScrollBarBar) that a user may move to shift the image in the window up and down or right and left in cases in which the logical image is larger than the portion displayed in the window. The image may be pure text or may be graphics.")
(disjoint ComputerMenu ScrollBar)
(disjoint ScrollBar GUIButton)
; A ScrollBar can be used to move an image in a window
; A ScrollBar is typically moved by a mouse icon
; A ScrollBar can be moved by a roller
; A ScrollBar can be moved by arrow keys
(subclass HorizontalScrollBar ScrollBar)
(documentation HorizontalScrollBar EnglishLanguage "A &%HorizontalScrollBar is a horizontal image of a slider on an &%InterfaceWindow with an indicator (&%ScrollBarBar) that a user may move to shift the image in the window to the right and left in cases in which the logical image is wider than the portion displayed in the window. The image may be pure text or may be graphics.")
(subclass VerticalScrollBar ScrollBar)
(documentation VerticalScrollBar EnglishLanguage "A &%VerticalScrollBar is a vertical image of a slider on an &%InterfaceWindow with an indicator (&%ScrollBarBar) that a user may move to shift the image in the window up or down in cases in which the logical image is taller than the portion displayed in the window. The image may be pure text or may be graphics.")
(disjoint VerticalScrollBar HorizontalScrollBar)
(subclass ScrollBarBar GUIActiveArea)
(documentation ScrollBarBar EnglishLanguage "A &%ScrollBarBar is an image of an indicator on an &%ScrollBar that a user may move to shift the logical image in the window up and down or right and left in cases in which the logical image is larger than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes ScrollBarBar ScrollBar)
(disjoint ScrollBarBar ScrollBar)
(disjoint ScrollBarBar ComputerMenu)
(disjoint ScrollBarBar ComputerTouchscreenKeypad)
(disjoint ScrollBarBar ComputerTouchscreenKeyboard)
(subclass ScrollBarArrowButton GUIButton)
(documentation ScrollBarArrowButton EnglishLanguage "A &%ScrollBarArrowButton is an image of an arrow on an &%ScrollBar that a user may click on or hold down to shift the logical image in the window up and down or right and left in cases in which the logical image is larger than the portion displayed in the window. The logical image may be pure text or may be graphics.")
(properPartTypes ScrollBarArrowButton ScrollBar)
(disjoint ScrollBarArrowButton ScrollBarBar)
(disjoint ScrollBarArrowButton ComputerMenu)
(subclass ScrollBarRightArrowButton ScrollBarArrowButton)
(documentation ScrollBarRightArrowButton EnglishLanguage "A &%ScrollBarRightArrowButton is an image of an arrow on an &%ScrollBar that a user may click on or hold down to shift the image in the window to the right in cases in which the logical image is wider than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes ScrollBarRightArrowButton HorizontalScrollBar)
(subclass ScrollBarLeftArrowButton ScrollBarArrowButton)
(documentation ScrollBarLeftArrowButton EnglishLanguage "A &%ScrollBarLeftArrowButton is an image of an arrow on an &%ScrollBar that a user may click on or hold down to shift the image in the window to the left in cases in which the logical image is wider than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes ScrollBarLeftArrowButton HorizontalScrollBar)
(disjoint ScrollBarLeftArrowButton ScrollBarRightArrowButton)
(subclass ScrollBarUpArrowButton ScrollBarArrowButton)
(documentation ScrollBarUpArrowButton EnglishLanguage "A &%ScrollBarUpArrowButton is an image of an arrow on an &%ScrollBar that a user may click on or hold down to shift the image in the window upward in cases in which the logical image is taller than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes ScrollBarUpArrowButton VerticalScrollBar)
(disjoint ScrollBarUpArrowButton ScrollBarRightArrowButton)
(disjoint ScrollBarUpArrowButton ScrollBarLeftArrowButton)
(subclass ScrollBarDownArrowButton ScrollBarArrowButton)
(documentation ScrollBarDownArrowButton EnglishLanguage "A &%ScrollBarDownArrowButton is an image of an arrow on an &%ScrollBar that a user may click on or hold down to shift the image in the window downward in cases in which the logical image is taller than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes ScrollBarDownArrowButton VerticalScrollBar)
(disjoint ScrollBarDownArrowButton ScrollBarUpArrowButton)
(disjoint ScrollBarDownArrowButton ScrollBarRightArrowButton)
(disjoint ScrollBarDownArrowButton ScrollBarLeftArrowButton)
(subclass GUISlider GUIActiveArea)
(documentation GUISlider EnglishLanguage "A &%GUISlider is an image of a slider on an &%InterfaceWindow with an indicator (&%GUISliderIndicator) that a user may move to shift a value up and down or within a list of values.")
(disjoint GUISlider ScrollBar)
(disjoint GUISlider ComputerTouchscreenKeypad)
(disjoint GUISlider ComputerTouchscreenKeyboard)
; A GUISlider can be used to change a data value
; A GUISlider is typically moved by a mouse icon
; A GUISlider can be moved by a roller
; A GUISlider can be moved by arrow keys
(subclass GUISliderIndicator GUIActiveArea)
(documentation GUISliderIndicator EnglishLanguage "A &%GUISliderIndicator is an image of an indicator on an &%GUISlider that a user may move to shift the image in the window up and down or right and left in cases in which the logical image is larger than the portion displayed in the window. The image may be pure text or may be graphics.")
(properPartTypes GUISlider GUISliderIndicator)
(disjoint GUISliderIndicator ComputerMenu)
(disjoint GUISliderIndicator ScrollBar)
(disjoint GUISliderIndicator ScrollBarBar)
(subclass Cursor GUIElement)
(documentation Cursor EnglishLanguage "A &%Cursor is a &%GUIElement designed for a user to move around a computer screen. A cursor can have different visual forms and may change in appearance depending upon the current type of graphical interaction. A &%TextCursor locates an active area for inserting or deleting text and is more limited in its movement than a &%MouseCursor. Both a mouse cursor and a text cursor may be visible at the same time.")
; A cursor may be controlled by a &%ComputerMouse, but may also be controlled by
; software, a trackball, joystick, or keyboard arrow keys
(subclass TextCursor Cursor)
(documentation TextCursor EnglishLanguage "A &%TextCursor is a &%Cursor that locates an active area for inserting or deleting text and is more limited in its movement than a &%MouseCursor. Both a mouse cursor and a text cursor may be visible at the same time.")
(subclass MouseCursor Cursor)
(documentation MouseCursor EnglishLanguage "A &%MouseCursor is a &%Cursor that locates a location on a computer screen ``pointed to'' by a computer mouse, trackball, joystick, or other device. Both a mouse cursor and a text cursor may be visible at the same time.")
(disjoint MouseCursor TextCursor)
(disjoint MouseCursor GUIActiveArea)
; Only one &%MouseCursor may be on a screen at a time
(=>
(and
(instance ?CURSOR1 MouseCursor)
(instance ?CURSOR2 MouseCursor)
(screenOfGUIE ?CURSOR1 ?SCREEN)
(screenOfGUIE ?CURSOR2 ?SCREEN))
(equal ?CURSOR1 ?CURSOR2))
(subclass InterfaceWindow GUIElement)
(documentation InterfaceWindow EnglishLanguage "An &%InterfaceWindow is a &%GUIElement that covers a (normally rectangular region of a computer screen. Each window has an image which covers its whole area and a level of transparency. A region of the screen may be covered by one or more &%InterfaceWindows in a specified order with the ``top'' window visible, and those sequentially underneigth visible only to the extent that the window(s) above them are partially or wholely transparent. An interface window is ``active'' if the state of the GUI is such that user input is automatically set to it.")
(disjoint Cursor InterfaceWindow)
(subclass PopupWindow InterfaceWindow)
(documentation PopupWindow EnglishLanguage "A &%PopupWindow is a &%InterfaceWindow that appears in addition to the window with which a user is interacting. A popup window traditionally appears partially covering the previously active window, although some are place below the active window and are not visible until the active window no longer covers that area. A popup window may be used to provide information (including advertising) to the user or may be an interaction window.")
(subclass HoverBox PopupWindow)
(documentation HoverBox EnglishLanguage "A &%HoverBox is a &%PopupWindow that temporarily appears when the cursor is within a &%HoverBoxActiveArea.")
; A &%HoverBox appears when
(subclass HoverBoxActiveArea GUIActiveArea)
(documentation HoverBoxActiveArea EnglishLanguage "A &%HoverBoxActiveArea is a &%GUIActiveArea which, when it becomes active, causes a &%HoverBox to appear on the active display.")
; RULE NEEDED
(subclass TextBox GUIElement)
(documentation TextBox EnglishLanguage "A &%TextBox is a (normally rectangular) &%GUIElement which displays and/or accepts input of text.")
(disjoint TextBox ComputerMenu)
(disjoint TextBox GUIButton)
(subclass TextInputBox GUIActiveArea)
(subclass TextInputBox TextBox)
(documentation TextInputBox EnglishLanguage "A &%TextInputBox is a &%TextBox that accepts input of text.")
(havePartTypes ComboList TextInputBox)
; Rule needed. Note Paste (^V and via Right Click menu)
(subclass TextOutputBox TextBox)
(documentation TextOutputBox EnglishLanguage "A &%TextOutputBox is a &%TextBox that which displays text.")
(subclass GUICheckBox GUIActiveArea)
(documentation TextInputBox EnglishLanguage "A &%GUICheckBox is a &%GUIActiveArea with associated text or icon that may have its state changed between selected and not selected by clicking or typing a keyboard key. Some applications use checkboxes that allow an indeterminate state in addition to the two provided by a normal checkbox. This third state is depicted differently than the selected and unselected states, and indicates that its state is neither checked nor unchecked. This is most often used when the checkbox is tied to a collection of items in mixed states. The indeterminate state cannot usually be selected by the user, and switches to a checked (or in some applications unchecked) state when activated. Like a &%GUIRadioButton a &%GUICheckBox stays selected after being clicked on and released, but unlike a radio buton, multiple check boxes in a set may be the selected state at the same time.")
(disjoint GUICheckBox GUIRadioButton)
(subclass ComputerMenuItem GUIActiveArea)
(documentation ComputerMenuItem EnglishLanguage "A &%ComputerMenuItem is a &%UIElement that presents one of the user's options and informs the running program if the user selects that option. A &%ComputerMenuItem may act as either a &%GUIRadioButton or a &%GUICheckBox. In many instances a menu item acts as a radio button on a normal click and as a check box on a shift-click.")
(partTypes ComputerMenuItem ComputerMenu)