For the particular case, frankly I just used has part (P527) because it is better for building link networks since it has the inverse property part of (P361) (used by items syntax (Q1152399) and execution model (Q25346349)), which has quality (P1552) does not have.
I am a bit conflicted about the distinction as well, but here are my thoughts:
- I look at the aliases defined for "has quality" which are "attribute" and "required property", so from that perspective, if «?X <has quality> ?Q» then «?Q should be <instance or subclass of> property (Q937228)».
- part of (P361) seems to indicate a kind of an "ownership"/"containment" relationship, in the sense that a subject should not be part of more than one object.
Conversely, a quality (attribute) is not necessarily linked to just one object, but can be a characteristic of many different classes.
- programming language (Q9143) and syntax (Q1152399) are both classes -- Help:Basic membership properties also says that a class can be part of another class which can also imply an instance-instance relationship -- as an example, a particular programming language's syntax is also part of that particular programming language (ie. they have an exclusive relationship), so all the logic here seems to work.
There is something deep about this question, but unfortunately my linguistic / metaphysical knowledge is a bit lacking at the moment to fully answer it 🙂