»â°ì (domain)
Provides a computationally and heuristically
convenient mechanism for declaring the argument types of a given relation.
The formula (domain rel int class) means that the int'th element of each
tuple in the relation rel must be an instance of class. Specifying argument
types is very helpful in maintaining ontologies. Representation systems can
use these specifications to classify terms and check integrity constraints.
If the restriction on the argument type of a Relation is not captured by a
SetOrClass already defined in the ontology, one can specify a SetOrClass
compositionally with the functions UnionFn, IntersectionFn, etc.
Ontology
SUMO / STRUCTURAL-ONTOLOGYClass(es)
Coordinate term(s)
¼Ð°ª
¤¶©ó
¯à¤O
±ø¥ó©ÎµM²v
½á¤©¸q°È
½á¤©Åv¤O
¬Û³s
²`«×
¶ZÂ÷
»â°ì¦¸ºØÃþ
¬I¨ÆªÌ¦³·N¹Ï
³sµ²
¦³...¾¦ì
¬Û¹ï¤è¦ì
°¾·R
SUMO¥~³¡¬ÛÃö·§©À
¬I¨ÆªÌ§e²{
¥H...»y¨¥§e²{
®É¶¡¤¶©ó
®É¶¡¤¶©ó©Î¦P®É
Type restrictions
domain(Ãö«Y, ¥¿¾ã¼Æ, ¶°¦X©ÎºØÃþ)
Axioms (13)
If pred1 ¬O pred2 ªº ¦¸Ãö«Y and pred2 ªº ½×¤¸ number ¬O class1 ªº ¹ê¨Ò, then pred1 ªº ½×¤¸ number ¬O class1 ªº ¹ê¨Ò.
(=>
(and
(subrelation ?PRED1 ?PRED2)
(domain ?PRED2 ?NUMBER ?CLASS1))
(domain ?PRED1 ?NUMBER ?CLASS1))
If rel ªº ½×¤¸ number ¬O class1 ªº ¹ê¨Ò and rel ªº ½×¤¸ number ¬O class2 ªº ¹ê¨Ò, then class1 ¬O class2 ªº ¦¸ºØÃþ or class2 ¬O class1 ªº ¦¸ºØÃþ.
(=>
(and
(domain ?REL ?NUMBER ?CLASS1)
(domain ?REL ?NUMBER ?CLASS2))
(or
(subclass ?CLASS1 ?CLASS2)
(subclass ?CLASS2 ?CLASS1)))
If rel1 ªº ½×¤¸ number ¬O class1 ªº ¹ê¨Ò and rel2 ªº ½×¤¸ number ¬O class2 ªº ¹ê¨Ò and class1 µL¥æ¶° ©ó class2, then µL¥æ¶°Ãö«Y(rel1,rel2) holds.
(=>
(and
(domain ?REL1 ?NUMBER ?CLASS1)
(domain ?REL2 ?NUMBER ?CLASS2)
(disjoint ?CLASS1 ?CLASS2))
(disjointRelation ?REL1 ?REL2))
If function ¬O ¤@¤¸«í©w¨ç¼Æ¶q ªº ¹ê¨Ò, then function ªº ½×¤¸ ¬O ±`¶q ªº ¹ê¨Ò and function ªº ½d³ò ¬O ±`¶q ªº ¹ê¨Ò.
(=>
(instance ?FUNCTION UnaryConstantFunctionQuantity)
(and
(domain ?FUNCTION 1 ConstantQuantity)
(range ?FUNCTION ConstantQuantity)))
If function ¬O ®É¶¡¨ÌÅܶq ªº ¹ê¨Ò, then function ªº ½×¤¸ ¬O ®É¶¡³æ¦ì ªº ¹ê¨Ò.
(=>
(instance ?FUNCTION TimeDependentQuantity)
(domain ?FUNCTION 1 TimeMeasure))
rel ¬O ¥þÈÃö«Y ªº ¹ê¨Ò if and only if there exists valence so that rel ¬O Ãö«Y ªº ¹ê¨Ò and rel %&¦³ ½×¤¸(s) valence and - if for all number,element,class holds: if number ¤p©ó valence and rel ªº ½×¤¸ number ¬O class ªº ¹ê¨Ò and element µ¥©ó ""()" ªº ²Ä¤G ¤¸¯À", then element ¬O class ªº ¹ê¨Ò,
- then there exists item so that rel(,item) (¤£) ¦¨¥ßs
.
(<=>
(instance ?REL TotalValuedRelation)
(exists
(?VALENCE)
(and
(instance ?REL Relation)
(valence ?REL ?VALENCE)
(=>
(forall
(?NUMBER ?ELEMENT ?CLASS)
(=>
(and
(lessThan ?NUMBER ?VALENCE)
(domain ?REL ?NUMBER ?CLASS)
(equal
?ELEMENT
(ListOrderFn
(ListFn @ROW)
?NUMBER)))
(instance ?ELEMENT ?CLASS)))
(exists
(?ITEM)
(holds ?REL @ROW ?ITEM))))))
If - rel ¬O ¤G¤¸Ãö«Y ªº ¹ê¨Ò
and - rel ªº ½×¤¸ ¬O class1 ªº ¹ê¨Ò or rel ªº ½×¤¸ ¬O class1 ªº ¦¸ºØÃþ
and - rel ªº ½×¤¸ ¬O class2 ªº ¹ê¨Ò or rel ªº ½×¤¸ ¬O class2 ªº ¦¸ºØÃþ or rel ªº ½d³ò ¬O class2 ªº ¹ê¨Ò or ³Q rel Âk¦^ ªºÈ ¬O class2ªº ¦¸ºØÃþ
and - class1 µL¥æ¶° ©ó class2
, then rel ¬O ¤£¹ïºÙÃö«Y ªº ¹ê¨Ò.
(=>
(and
(instance ?REL BinaryRelation)
(or
(domain ?REL 1 ?CLASS1)
(domainSubclass ?REL 1 ?CLASS1))
(or
(domain ?REL 2 ?CLASS2)
(domainSubclass ?REL 2 ?CLASS2)
(range ?REL ?CLASS2)
(rangeSubclass ?REL ?CLASS2))
(disjoint ?CLASS1 ?CLASS2))
(instance ?REL AsymmetricRelation))
If rel ªº ½×¤¸ number ¬O class ªº ¹ê¨Ò and rel() (¤£) ¦¨¥ßs, then ""()" ªº ²Ä¤G ¤¸¯À" ¬O class ªº ¹ê¨Ò.
(=>
(and
(domain ?REL ?NUMBER ?CLASS)
(holds ?REL @ROW))
(instance
(ListOrderFn
(ListFn @ROW)
?NUMBER)
?CLASS))
- if fun ¬O ¤@¹ï¤@¨ç¼Æ ªº ¹ê¨Ò,
- then for all arg1,arg2 holds: if fun ªº ½×¤¸ ¬O class ªº ¹ê¨Ò and arg1 ¬O class ªº ¹ê¨Ò and arg2 ¬O class ªº ¹ê¨Ò and arg1 µ¥©ó arg2, then "fun(arg1)" µ¥©ó "fun(arg2)"
.
(=>
(instance ?FUN OneToOneFunction)
(forall
(?ARG1 ?ARG2)
(=>
(and
(domain ?FUN 1 ?CLASS)
(instance ?ARG1 ?CLASS)
(instance ?ARG2 ?CLASS)
(not
(equal ?ARG1 ?ARG2)))
(not
(equal
(AssignmentFn ?FUN ?ARG1)
(AssignmentFn ?FUN ?ARG2))))))
- if function ¬O Ãö³s¨ç¼Æ ªº ¹ê¨Ò,
- then for all inst1,inst2,inst3 holds: if function ªº ½×¤¸ ¬O class ªº ¹ê¨Ò and inst1 ¬O class ªº ¹ê¨Ò and inst2 ¬O class ªº ¹ê¨Ò and inst3 ¬O class ªº ¹ê¨Ò, then "function(inst1,"function(inst2,inst3)")" µ¥©ó "function("function(inst1,inst2)",inst3)"
.
(=>
(instance ?FUNCTION AssociativeFunction)
(forall
(?INST1 ?INST2 ?INST3)
(=>
(and
(domain ?FUNCTION 1 ?CLASS)
(instance ?INST1 ?CLASS)
(instance ?INST2 ?CLASS)
(instance ?INST3 ?CLASS))
(equal
(AssignmentFn
?FUNCTION
?INST1
(AssignmentFn ?FUNCTION ?INST2 ?INST3))
(AssignmentFn
?FUNCTION
(AssignmentFn ?FUNCTION ?INST1 ?INST2)
?INST3)))))
- if function ¬O ¥i´«¨ç¼Æ ªº ¹ê¨Ò,
- then for all inst1,inst2 holds: if function ªº ½×¤¸ ¬O class ªº ¹ê¨Ò and inst1 ¬O class ªº ¹ê¨Ò and inst2 ¬O class ªº ¹ê¨Ò, then "function(inst1,inst2)" µ¥©ó "function(inst2,inst1)"
.
(=>
(instance ?FUNCTION CommutativeFunction)
(forall
(?INST1 ?INST2)
(=>
(and
(domain ?FUNCTION 1 ?CLASS)
(instance ?INST1 ?CLASS)
(instance ?INST2 ?CLASS))
(equal
(AssignmentFn ?FUNCTION ?INST1 ?INST2)
(AssignmentFn ?FUNCTION ?INST2 ?INST1)))))
- if ¤À°t(function1,function2) holds,
- then for all inst1,inst2,inst3 holds: if function1 ªº ½×¤¸ ¬O class1 ªº ¹ê¨Ò and inst1 ¬O class1 ªº ¹ê¨Ò and inst2 ¬O class1 ªº ¹ê¨Ò and inst3 ¬O class1 ªº ¹ê¨Ò and function2 ªº ½×¤¸ ¬O class2 ªº ¹ê¨Ò and inst1 ¬O class2 ªº ¹ê¨Ò and inst2 ¬O class2 ªº ¹ê¨Ò and inst3 ¬O class2 ªº ¹ê¨Ò, then "function1(inst1,"function2(inst2,inst3)")" µ¥©ó "function2("function1(inst1,inst2)","function1(inst1,inst3)")"
.
(=>
(distributes ?FUNCTION1 ?FUNCTION2)
(forall
(?INST1 ?INST2 ?INST3)
(=>
(and
(domain ?FUNCTION1 1 ?CLASS1)
(instance ?INST1 ?CLASS1)
(instance ?INST2 ?CLASS1)
(instance ?INST3 ?CLASS1)
(domain ?FUNCTION2 1 ?CLASS2)
(instance ?INST1 ?CLASS2)
(instance ?INST2 ?CLASS2)
(instance ?INST3 ?CLASS2))
(equal
(AssignmentFn
?FUNCTION1
?INST1
(AssignmentFn ?FUNCTION2 ?INST2 ?INST3))
(AssignmentFn
?FUNCTION2
(AssignmentFn ?FUNCTION1 ?INST1 ?INST2)
(AssignmentFn ?FUNCTION1 ?INST1 ?INST3))))))
- if id ¬O function ªº ¦P¤@¤¸¯À,
- then for all inst holds: if function ªº ½×¤¸ ¬O class ªº ¹ê¨Ò and inst ¬O class ªº ¹ê¨Ò, then "function(id,inst)" µ¥©ó inst
.
(=>
(identityElement ?FUNCTION ?ID)
(forall
(?INST)
(=>
(and
(domain ?FUNCTION 1 ?CLASS)
(instance ?INST ?CLASS))
(equal
(AssignmentFn ?FUNCTION ?ID ?INST)
?INST))))