Many comments highlight their complexities. Ironically, SOAP itself stands for Simple Object Access Protocol. What strikes me as remarkable is that CORBA, COM, and SOAP all emphasized distributed object communication, while more recent alternatives—REST, JSON, gRPC, and GraphQL—focus instead on message formats and discard the entire notion of distributed objects.
Correct - I made this point in my comment earlier - a bit part of this is the difference between DOP and OOP, and how similar technologies can be used for either style of integration. (SOAP is one of them that I have a lot of experience with - you can do RPC-over-SOAP or REST-over-SOAP, with vastly different results).
And a similar pattern can also be seen with ORMs: the notion of objects has proven less helpful, leading many developers to prefer the query builder and dataframe approach instead.
Exactly right - the data-first (or contract-first for APIs) is a better abstraction barrier than object-first (or data + code mixed together). Most query languages respect this, and when they do not, it usually ends up being a dead end. That includes ideas like embedded a JVM in an Oracle SQL database or various NoSQL systems that have tried embedding Javascript or other general purpose programming languages.