;;; -*- Mode:Lisp; Syntax: Common-Lisp; Package:ONTOLINGUA-USER; Base:10 -*-
;;; Physical Components Ontology
;;; (c) 1993 Greg Olsen and Thomas Gruber
(in-package "ONTOLINGUA-USER")
(define-theory MECHANICAL-COMPONENTS (component-assemblies
simple-geometry)
"This theory provides a minimal vocabulary for describing
three-dimensional objects with mass. It is built on the abstract
notion of components that we get from the component-assemblies theory,
and the elementary geometric primitives from the simple-geometry theory.
In this theory, we say that a MECHANICAL-COMPONENT is a component that has a
REFERENCE-POINT, a REFERENCE-FRAME, and a MASS. Information about the spatial
extent and relative position of the object can be specified using the
reference frame and point. The MASS of a mechanical-component is a physical
quantity specified as the value of a unary function. The INERTIA-TENSOR for
the component is given with a binary relation from the component and its
reference point to an inertia quantity."
:issues ("Copyright (c) 1994 Greg Olsen and Thomas R. Gruber")
)
(in-theory 'mechanical-components)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Physical Components
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-class MECHANICAL-COMPONENT (?p)
"Mechanical-component is a specialization of COMPONENT
from the component-assemblies theory. Mechanical components
are three-dimensional objects with an associated reference point
and reference frame. They also have a slot called MASS
whose value is a scalar-quantity of dimension mass-dimension."
:def (and (component ?p)
(3D-point (REFERENCE-POINT ?p))
(3D-frame (REFERENCE-FRAME ?p))
(scalar-quantity (MASS ?p))
(3D-dyad (inertia-tensor ?p (reference-point ?p)))))
(define-class MECHANICAL-CONNECTION (?c)
"The physical-connection class is a specialization of the connection class
from the component-components theory."
:def (connection ?c))
(define-function REFERENCE-POINT (?comp) :-> ?point
"The reference point of a mechanical-component."
:def (and (mechanical-component ?comp)
(3D-point ?point)))
(define-function REFERENCE-FRAME (?comp) :-> ?frame
"The reference frame of a mechanical-component."
:def (and (mechanical-component ?comp)
(3D-frame ?frame)))
(define-function MASS (?comp) :-> ?m
"The mass of a mechanical-component, which is a scalar
quantity of physical-dimension mass-dimension."
;; This is an attribute
:def (and (mechanical-component ?comp)
(scalar-quantity ?m)
(quantity.dimension ?m mass-dimension)))
(define-function INERTIA-TENSOR (?comp ?pt) :-> ?i
"The inertia tensor of mechanical-component. Relative to a
given point."
:def (and (mechanical-component ?comp)
(3D-point ?pt)
(3D-dyad ?i)
(quantity.dimension
?i
(* mass-dimension
(* length-dimension
length-dimension)))))
(define-function APPLIED-FORCE (?comp1 ?comp2) :-> ?f
"The resultant applied force of comp1 on comp2. A 3D vector."
:def (and (mechanical-component ?comp1)
(mechanical-component ?comp2)
(3D-vector-quantity ?f)
(quantity.dimension ?f force-dimension)))
(define-function APPLIED-TORQUE (?comp1 ?comp2) :-> ?t
"The resultant applied torque of comp1 on comp2. A 3D vector."
:def (and (mechanical-component ?comp1)
(mechanical-component ?comp2)
(3D-vector-quantity ?t)
(quantity.dimension ?t (* force-dimension
length-dimension))))