;;; -*- 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))))