---
##
## A toy ontology for testing the markup ontology-item widget.
## It purports to be an ontology of engineered objects.
##
## Process this YAML file into OWL xml like so:
## ```sh
## pip install yamlpyowl
## yamlpyowl -c -o engineered.owl engineered.owl.yaml
## ```
##

- iri: https://w3id.org/yet/undefined/engineered-object-ontology#
- annotation: "source: https://gitlab.kitware.com/dcthomp/engineered-object-ontology/blob/master/engineered.owl"

##
## Classes
##
- multiple_owl_classes:
    # Basic physics terminology
    - energy:
        SubClassOf: "owl:Thing"
        labels: "energy"
        annotations: "Everything in the universe is energy."
    - shape:
        SubClassOf: "owl:Thing"
        labels: "shape"
        annotations: "A distance metric via which energy interacts."
    - matter:
        SubClassOf:
            - energy
            - shape
        labels: "matter"
        annotations: "Matter is a form of energy that induces a distance metric."
    - phase_of_matter:
        SubClassOf: "owl:Thing"
        labels: "phase of matter"
        annotations: |
          A phase of matter is a region of space occupied by a homogenous material whose
          properties all share a uniform value (to within some figure of merit).
          This is related but not identical to the state of matter, but the word "phase"
          is often used in either context.
          A phase requires uniformity of property values while a state refers to the
          type of interactions between particles.
    - state_of_matter:
        SubClassOf: "owl:Thing"
        labels: "state of matter"
        annotations: |
          A state of matter is a property of matter that identifies its form (spatial
          arrangement and composition). States of matter are related but not identical to
          phases of matter – however the word "phase" is often used in either context.
          A phase requires uniformity of property values while a state refers to the
          type of interactions between particles.
    - fluid:
        SubClassOf: state_of_matter
        labels: "fluid"
        annotations: "Matter in a liquid or vapor phase."
    - liquid:
        SubClassOf: fluid
        labels: "liquid"
        annotations: |
          A state of matter in which molecules interact strongly with neighbors that
          vary significantly in time. These interactions tend to be via intramolecular
          electromagnetic forces and gravity.
          Liquids generally have a low resistance to strain.
    - vapor:
        SubClassOf: fluid
        labels:
          - vapor
          - gas
        annotations: |
          A state of matter in which molecules interact weakly with their neighbors;
          these interactions are generally collisions. The collision itself is an
          electromagnetic interaction but only local to the molecules in immediate
          proximity to one another – and these periods of interaction are rare in time.
          Vapors (a.k.a. gases) generally have a negligible resistance to strain.
    - solid:
        SubClassOf: state_of_matter
        labels: "solid"
        annotations: |
          A state of matter in which molecules interact strongly with a fixed set of neighbors.
          Solids resist strain via dislocation energy in a crystalline lattice, which may be irregular or granular.
          Solids generally have low compressibility (i.e., small changes in volume require large
          changes in pressure) and are often approximated as incompressible.
    - crystal_solid:
        SubClassOf: solid
        labels:
          - crystal solid
          - crystalline solid
        annotations: "A solid whose atoms are arranged in a regular lattice."
    - amorphous_solid:
        SubClassOf: solid
        labels: "amorphous solid"
        annotations: "A solid whose atoms are not in a regular arrangement with one another."
    - plasma:
        SubClassOf: state_of_matter
        labels: "plasma"
        annotations: |
          Matter containing a significant number of charged particles.
          The exact fraction of particles which must be charged depends on the context,
          but generally plasma interactions are dominated by electromagnetic forces at
          large distances while uncharged vapors interact by collisions (where electromagnetic
          forces are only relevant locally at the time of the collision) and gravitational forces.

    # Engineering terminology
    - function:
        SubClassOf: "owl:Thing"
        labels: "function"
        annotations: |
          The reason for which an engineered substance is formed;
          the purpose or goal dictating the existence of engineered matter.
    - part:
        SubClassOf:
          - matter
          - function
        labels: "part"
        annotations: |
          A collection of matter in a shape which provides one or more functions.
          A part has a lifecycle that includes its manufacture, assembly, use, and
          either destruction or recycling. Functions embodied by a part may relate
          to any non-empty subset of these portions of its life.
    - feature:
        SubClassOf: "owl:Thing"
        labels: "feature"
        annotations: |
          A detail of a part related to one or more of the part's functions.
          Features typically identify a region, a manufacturing technique, or
          some property of its shape that is important to the lifecycle of the part.
    - join:
        SubClassOf: function
        labels: "join"
        annotations: "Connect parts or natural objects to one another."
    - accept_hand:
        SubClassOf: function
        labels: "accept hand"
        annotations: "A place where a human hand may comfortably and safely grasp a part."
    - transfer_heat:
        SubClassOf: function
        labels: "transfer heat"
        annotations: "Move heat from one location to another."
    - distribute_force:
        SubClassOf: function
        labels: "distribute force"
        annotations: |
          Spread a load across an area.
          Generally this is done to reduce stress concentrations in structural applications.
    - apply_force:
        SubClassOf: function
        labels: "apply force"
        annotations: "Apply a force to parts or natural objects."
    - apply_torque:
        SubClassOf: function
        labels: "apply torque"
        annotations: "Apply a torque (a.k.a. a moment or force-couple) to parts or natural objects."
    - constrain_motion:
        SubClassOf: function
        labels: "constrain motion"
        annotations: "Allow motion between parts or natural objects, but only in some linear or rotational directions."
    - constrain_to_axial_motion:
        SubClassOf: constrain_motion
        labels: "constrain to axial motion"
        annotations: "Allow rotation about a single axis only."
    - constrain_to_linear_motion:
        SubClassOf: constrain_motion
        labels: "constrain to linear motion"
        annotations: "Allow translation along a single axis only."
    - constrain_to_helical_motion:
        SubClassOf: constrain_motion
        labels: "constrain to helical motion"
        annotations: |
          Constrain parts to translate along and rotate about a single axis in fixed proportion relative to one another.
    - transmit_linear_motion:
        SubClassOf: constrain_motion
        labels: "transmit linear motion"
        annotations: "Change the location at which a linear motion is available."
    - transmit_rotary_motion:
        SubClassOf: constrain_motion
        labels: "transmit rotary motion"
        annotations: "Change the location at which a rotary motion is available."
    - linear_rotary_motion_conversion:
        SubClassOf: function
        labels: "convert motion linear/rotary"
        annotations: "Convert rotary motion of one part into linear motion of a related part, or vice-versa."
    - threads:
        SubClassOf:
            - feature
            - constrain_to_helical_motion
        labels: "threads"
        annotations: |
          Threads are a shape by which two or more parts are constrained to move linearly
          along a common axis while also rotating in proportion to their displacement along
          the axis. The shape of a thread is generally a cross-sectional profile that is
          helically extruded about an axis.
          Threads are often used in fasteners to apply a frictional fastening force
          proportional to a torque induced by compression.
    - external_threads:
        SubClassOf: threads
        labels: "external threads"
        annotations: |
          A configuration of threads where the helically extruded surface is on the
          exterior of the part. External threads mate with internal threads.
    - internal_threads:
        SubClassOf: threads
        labels: "internal threads"
        annotations: |
          A configuration of threads where the helically extruded surface is on the
          interior of the part. Internal threads mate with external threads.
    - weld:
        SubClassOf:
          - feature
          - join
        labels: "weld"
        annotations: "A region of a part where material has been welded."
    - joint:
        SubClassOf:
          - feature
          - join
        labels: "joint"
        annotations: "A region where a part is articulated or fastened."
    - fitting:
        SubClassOf: joint
        labels: "fitting"
        annotations: |
          A region where a part is shaped to mate with another part in order
          to fasten; to maintain a pressure seal; and/or adapt a part's shape
          to conform to a standard.
          Examples include pipe fittings such as tees, caps, unions, elbows, and flanges.
    - fastener:
        SubClassOf:
          - joint
          - part
        labels: "fastener"
        annotations: "A part used to connect other parts."
    - spring:
        SubClassOf: part
        labels: "spring"
        annotations: "A part used to apply force between a pair of other parts."
    - linear_spring:
        SubClassOf: spring
        labels: "linear spring"
        annotations: "A spring that applies force along the line between its endpoints."
    - rotational_spring:
        SubClassOf: spring
        labels: "rotational spring"
        annotations: "A spring that applies rotational torque across its endpoints."
    - structure:
        SubClassOf: feature
        labels: "structure"
        annotations: "Indicates a part is a single connected component. It may be rigid or flexible."
    - mechanism:
        SubClassOf: feature
        labels: "mechanism"
        annotations: "Indicates a part consists of multiple connected components."
    - u_joint:
        SubClassOf:
          - part
          - mechanism
          - join
          - constrain_to_axial_motion
          - apply_torque
        labels: "u joint"
        annotations: |
          A mechanism used to transmit torque between rotating parts whose axes are not collinear.
          U-joints consist of two U-shaped parts joined to one another by a cross-shaped pin.
          The pins connect to the U-shaped parts via bushings or bearings such that when one U-part
          rotates about its centerline, the other must rotate about its centerline as well.
          The centerlines of the U-shaped parts are not constrained.
    - bearing:
        SubClassOf:
          - part
          - mechanism
        labels: "bearing"
        annotations: |
          A mechanism where contacting parts experience relative motion.
          Bearings exist to constrain the relative motion.
    - bushing:
        SubClassOf: bearing
        labels: "bushing"
        annotations: "A bearing with direct sliding contact between parts."
    - journal_bearing:
        SubClassOf: bearing
        labels: "journal bearing"
        annotations: |
          A bearing which uses a thin liquid film between parts experiencing relative motion
          in order to reduce friction and wear.
    - roller_bearing:
        SubClassOf: bearing
        labels: "roller bearing"
        annotations: |
          A bearing which uses cylindrical, conical, or spherical rotating parts between
          parts experiencing relative motion in order to reduce friction and wear.
    - needle bearing:
        SubClassOf: roller_bearing
        labels: "needle bearing"
        annotations: |
          A bearing with small cylindrical rollers whose axis of rotation is normal to the
          axis of relative motion between the parts joined by the bearing.
    - working_fluid:
        SubClassOf:
          - part
          - fluid
        labels: "working fluid"
        annotations: "A fluid part which participates in a thermodynamic cycle."
    - radiator:
        SubClassOf:
          - part
          - transfer_heat
        labels: "radiator"
        annotations: |
          A part which serves to transfer heat to or from a working fluid via radiation.
          Generally, the working fluid moves through the radiator so convection is also
          involved.
    - condenser:
        SubClassOf: part
        labels: "condenser"
        annotations: "A part which facilitates phase change of a working fluid from vapor to liquid."
    - pump:
        SubClassOf: part
        labels: "pump"
        annotations: "A part used to increase pressure and/or motion of a fluid."
    - pressure_vessel:
        SubClassOf: part
        labels: "pressure vessel"
        annotations: |
          Any part whose shape contains a void intended to contain a fluid at a different pressure than the
          exterior of the part.
    - pipe:
        SubClassOf: pressure_vessel
        labels: "pipe"
        annotations: |
          An annular extrusion whose inner void is used to transfer a fluid.
          Pipes are specified by a nominal outer diameter (which is not generally
          the actual outer diameter on pipes under 14 inches in diameter) and a
          schedule (related to wall thickness) that determines the maximum allowable
          gage pressure.
          Pipe tolerances are generally looser than tube tolerances, making similar
          sizes of pipe less expensive than tube.
    - tube:
        SubClassOf:
          - part
          - structure
        labels: "tube"
        annotations: |
          An annular extrusion. Generally tubes are not used to transfer fluid but
          to resist bending moments in a structure or mechanism by distributing matter far
          from the central axis of the extrusion. Many tubes are used as shafts.
          Tubes are specified by their outer diameter and wall thickness.
    - flange:
        SubClassOf: fitting
        labels: "flange"
        annotations: |
          A flange is a pipe fitting used to join pressure vessels so that their voids are sealed together.
          Pairs of flanges are generally bolted together to form a seal.
    - gland:
        SubClassOf: fitting
        labels: "gland"
        annotations: |
          A gland is a hole in a pressure vessel to allow another part (e.g., wire, cable, or tube)
          to pass into the chamber of the pressure vessel.
          Since the parts passing into the chamber are generally flexible, the gland is
          usually sealed by packing an amorphous material around the penetrating part to
          close the hole. This packing may be permanent (e.g., polyester resin cured in place)
          or removable (in which case the normal pressure holding the packing in place
          must exceed the maximum gage pressure of the chamber relative to its exterior).
    - shaft:
        SubClassOf:
          - part
          - solid
          - transmit_rotary_motion
        labels: "shaft"
        annotations: |
          A shaft is a part that transmits rotation about one of its axes.
          Generally, the longest axis of a shaft is the one which transmits
          rotary motion and each cross-section of the shaft has a center of
          mass (barycenter) placed where the axis passes through the cross-section
          to prevent imbalance. An exception to this last is a crankshaft.
    - crankshaft:
        SubClassOf:
          - shaft
          - linear_rotary_motion_conversion
        labels: "crankshaft"
        annotations: |
          A crankshaft converts rotation of a shaft into linear motion of a
          crank attached to an off-center section of the shaft via a bearing.
    - bolt:
        SubClassOf:
          - fastener
          - external_threads
        labels: "bolt"
        annotations: |
          A bolt is a threaded fastener with external threads and a head
          which accepts a tool to apply a torque.
    - stud:
        SubClassOf:
          - fastener
          - external_threads
        labels: "stud"
        annotations: |
          A stud is a threaded fastener with external threads.
          A stud may have two threaded sections connected by a keyed shaft
          that accepts a tool to apply torque or a single threaded section
          (in which case a pair of nuts is generally used to apply torque
          to loosen or secure the stud to its mating parts).
    - nut:
        SubClassOf:
          - fastener
          - internal_threads
        labels: "nut"
        annotations: |
          A nut is a threaded fastener with internal threads. Its
          exterior surface is generally a polygonal prism (hexagonal and
          square prisms are the most common) whose sides accept a tool
          to apply a tightening torque.
          The internal threads of a nut typically match the external
          threads of a bolt or stud.
          The top and bottom external surfaces (as opposed to the sides
          which are perpendicular to the thread axis) are generally flat
          in order to mate properly with a washer or other part.
    - wing nut:
        SubClassOf:
          - nut
          - accept_hand
        labels: "wing nut"
        annotations: |
          A nut whose external surface includes a pair of "wings" shaped to
          accept human fingers. Wing nuts are used in applications where
          humans can supply a sufficient tightening torque and tools, such as
          wrenches, used for tightening are undesirable or unavailable.
    - washer:
        SubClassOf:
          - fastener
          - distribute_force
        labels: "washer"
        annotations: |
          A washer is used to distribute force from a fastener such as
          a nut onto a larger surrounding area of a mating part.
          Washers are often necessary to prevent hardened steel fasteners
          from damaging mating parts made of softer materials.
          By distributing the compressive fastening force over a larger
          area, the pressure is reduced.
    - handle:
        SubClassOf:
          - part
          - accept_hand
          - constrain_motion
          - apply_force
        labels: "handle"
        annotations:
          A handle is a part that accepts a person's hand in order
          to guide it as force is applied (either by the human or
          the mechanism).
##
## Properties
##
- owl_object_property:
    hasStateOfMatter:
      Domain: matter
      Range: state_of_matter
      Characteristics:
          - Functional
