the term HDO_00001054 (hardware) is currently subclass of bfo:function.
this class hierarchy seems ill aligned - it should be somewhere under material entity and has function "hardware function"
current definition. Physical components which a data processing system comprises.
hardware:definition:A material entity which realises a hardware function.hardware function:definition:A function which inheres in a material entity and which is realised when that entity is used as part of or as a whole data processing system by virtue of its physical make-up.
i know you @steinm01 are really into functions and generally we could define EVERY class in terms of its role of function. However i think that is problematic because then the classes themselves loose semantic expressiveness themselves. Also it becomes very hard to define when we use the function/role pattern and when not. E.g. we do not have a "software role" or a "specification role"... . So i would say, lets define a class hardware based on its differentia and genus
Material entity is a good genus, maybe we.
i am not sure if "data processing" is a sufficiently wide differentia - i.e. instruments have hardware that record signals. Also data is usually interpreted in terms of digital data - how about analogue signals?
maybe it could be good to think about the class 'hardware' as a superclass for 'computer hardware', 'instrument' 'sensors' etc..?
def. hardware:A material entity which is a whole or part of a system which(1) processes data and(2) may encode data as non-digital signals or vice versa.
for hardware i find the following things on the web (in addition to what you already gathered):
the machines, wiring, and other physical components of a computer or other electronic system.
technical/ physical components of a computer or other electronic system.
physical parts
typically directed by the software to execute any command or instruction
thus I find differentia such as:
physical components
parts of a computer or other electronic systems
typically directed by software (in a computer)
excecutes commands, programming / instructions
with your @steinm01 previous work together i would propose the following:
label:hardwaredefinition:A material entity which is a whole of part of a computer or electronic system, that executes commands or instructions, to process signals in digital or analogue form.hasNarrowSyonym:Computer Hardwarecomments:Could instantiate subclass computer hardware to accomodate classes like GPU, CPU or keyboard
label:sensordefinition:Hardware which... see discussion in#80
I also thought about the "software" bit for this definition since hardware is often defined as an opposite to software. But I can't really see how we should or would need to do that in our HDO context. Especially because the "software" is always part of the hardware. Be it the state of some modern memory or the wiring of those first "hardware-only" computers from back then.
Nonetheless, I feel unsure with saying that every piece of hardware executes instructions. E.g. power cables, computer cases or tubes for water cooling: Do they count as hardware? They at least don't really execute instructions.
My suggestion on the other hand is in that sense maybe too broad. I.e. I can build things into my computer which I would definitely not call hardware. E.g. decorations.
Non-digital data would e.g. be text on a paper but signals/signifiers from the environment are not data. Therefore I would like to stick with something more similar to my last wording ("...may encode data as non-digital signals or vice versa.")
Why would you want to have "computer hardware"? Which system that processes data would you not call a computer?