Find classes and values#
Ontology classes are Python classes. Enumeration values, such as media and
roles, are EnumValue objects in the package’s enums module. Both can be
browsed as trees.
Browse a class branch#
from plumb.watr import Process
print(Process.meta.tree(max_depth=2))
Process
├── Process_BiologicalProcess
│ ├── Process_ActivatedSludge
│ ├── Process_Biofiltration
│ ├── Process_Composting
│ ├── Process_Denitrification
│ ├── Process_Digestion
│ ├── Process_EnhancedBiologicalPhosphorusRemoval
│ └── Process_Nitrification
├── Process_ChemicalProcess
│ ├── Process_ChemicalPrecipitation
│ ├── Process_Combustion
│ ├── Process_Dosing
│ ├── Process_Electrodialysis
│ ├── Process_Electrolysis
│ ├── Process_Flocculation
│ ├── Process_HighDensitySludge
│ ├── Process_Hydrolysis
│ ├── Process_IonExchange
│ ├── Process_Oxidation
│ ├── Process_Reduction
│ └── Process_SolventExtraction
└── Process_PhysicalProcess
├── Process_Adsorption
├── Process_Cleaning
├── Process_Combustion
├── Process_Comminution
├── Process_Condensation
├── Process_Electrocoagulation
├── Process_Electrooxidation
├── Process_Evaporation
├── Process_GasTransfer
├── Process_HighDensitySludge
├── Process_IonExchange
├── Process_LandApplication
├── Process_Landfilling
├── Process_Mixing
├── Process_Recirculation
├── Process_Separation
├── Process_Solidification
├── Process_ThermalTreatment
└── Process_UVIrradiation
Attribute |
Gives |
|---|---|
|
direct subclasses |
|
all subclasses |
|
direct parents |
|
printable subtree |
A class with several parents appears under each one.
Select a class#
Look up a class within a branch by short name, Python name, or IRI:
from plumb.watr import Process_ReverseOsmosis
selected = Process.meta["ReverseOsmosis"]
selected is Process_ReverseOsmosis, selected.meta.iri
(True, 'https://watermetadata.org/ontology/watr#Process-ReverseOsmosis')
The lookup raises KeyError outside the branch. issubclass() and
isinstance() work as usual.
Inspect a class#
.meta gives a class’s ontology provenance:
from plumb.watr import SedimentationTank
SedimentationTank.meta.iri, SedimentationTank.meta.label, SedimentationTank.meta.parents
('https://watermetadata.org/ontology/watr#SedimentationTank',
'Sedimentation Tank',
(plumb.watr.SeparationTank,))
print(SedimentationTank.meta.definition)
A tank in which suspended solids separate from water by settling under gravity
meta.properties lists the generated attributes and describe_ports() the
connection points. On an object, meta.instance_iri and meta.model
identify it.
List every class#
Each package’s REGISTRY lists its classes:
from plumb import watr
len(watr.REGISTRY.classes), watr.REGISTRY.resolve("Process_ReverseOsmosis")
(709, plumb.watr.Process_ReverseOsmosis)
The class catalog lists every S223 and WaTr class.
Browse enumeration values#
enums.values holds every value under a flat name. The top level of enums
holds the branches, for tab completion:
from plumb.watr import enums
water = enums.Substance.Medium.Mix.Fluid.Water
water is enums.values.Fluid_Water
True
water.tree(max_depth=2)
Fluid-Water
├── Water-Brackish
├── Water-Brine
├── Water-ChilledWater
├── Water-Freshwater
├── Water-GlycolSolution
│ ├── GlycolSolution-15Percent
│ └── GlycolSolution-30Percent
├── Water-HotWater
├── Water-Seawater
└── Water-Steam
Values have children, descendants, parent, and parents, without a
.meta step. tree_text() returns the tree as a string.
Select a value#
Bracket lookup searches a subtree by short name, flat name, or IRI:
chilled = enums.values.Water_ChilledWater
water["ChilledWater"] is chilled, water[chilled.iri] is chilled
(True, True)
An ambiguous short name raises KeyError listing the matches.
Check ancestry#
is_a() follows every parent:
sludge = enums.values.Fluid_Sludge
sludge.is_a(enums.values.Mix_Fluid), sludge.is_a(enums.values.Fluid_Water)
(True, False)
Sludge is a fluid mixture, not a kind of water.