Quick Short Answer
The answer is that is very subjective to the Software Analyst or Software Modeler.
Extended Boring Answer
There are several concepts that related or part of the Object Oriented Paradigm.
You already mention most of them.
For example, one concept you didn't mention, is message-passing, that is missing in most current O.O. programming languages, and was available, together with encapsulation and inheritance in the early O.O. programming languages ("Simula").
I worked sometimes with several variants or "idioms" of Object Oriented Pascal,
that had several of those features, and there was a variant that allowed to use "messages",
as part of the programming language (keyword "message"), similar to "try catch" exceptions, but, without interrupting execution.
While, other variants, and other programming languages provided as optional libraries (functions not keywords).
Summary
You may find that sometimes a programming language may skip some of them, and still be considered by some people O.O., while other not. Its very subjective.
Are you asking for plain intellectual curiosity ?
Do you wonder if the programming language you are using, is fully O.O. ?
Are you working with a collegue / university homework custom O.O. programming language ?
Are you working with a hobbyst, pet project, custom O.O. programming language ?
These questions, is my own curiosity, but, also to know how to make my answer more clear ;-)
There are some programming language & programming paradigms comparison courses at collegues and universities, that deal with this subject.
Cheers.