In SysMLv1, a part property (a type of block property) is a specific concept, refined from the UML2.5.1 concept of a 'part object', and distinct from 'port'. Formally, a 'port' in SysML is not a 'part property', even when typed by a Block and with AggregationKind 'composite'.
However, the SysMLv1.7 spec is in some spots contradictory if taken literally:
The following would seem to imply that a 'port' is not "general" in the sense used above:The above is slightly misleading, since the notations for a 'port' in an IBD are different from those for a 'part property', as shown in the IBD diagram above.
Additionally, one may show a Port on the boundary of a Block symbol in a BDD, although this is not recommended Webel Best Practice:
Also, the following, if taken literally, could pedantically be interpreted as including a 'port' typed by a Block as a 'part property'!
Consider a port, with AggregationKind 'composite', and typed by a Block. Is it a 'property'? Well, Port extends Property. And SysMLv1.7 says "Ports are specialized kinds of properties". So, perhaps yes, and if so, then that 'port' typed by a Block by the definition above is also a 'part property'!
Confusion can arise where the term 'property' is used. In some cases in the SysMLv1 specification it means strictly a Property (a specific metaclass), and excludes extending metaclasses such as Port; in some other cases the 'term' property is used to mean a Property OR any extending metaclass (so includes Port).
Note, however, that a 'port' MAY be typed by a ValueType, even if it is not recommended for SysMLv1.7:
Use of a ValueType as the type of a 'port' is a legacy approach associated with the DEPRECATED FlowPort and the DEPRECATED concept of atomic flow port (as opposed to a nonatomic flow port typed by the DEPRECATED FlowSpecification.
A direct Property (not a Port) typed by a ValueType is a value property, not a part property.
In UML, a 'port' is also described separately from the concept of 'part object':
It's quite clear on the the notations being different, too:The option above for the port to 'be shown inside the rectangle symbol' is supported in Magic Cyber-Systems Engineer® (Cameo Systems Modeler®) for SysMLv1 ports; try setting the visibility to 'private'.
If you are inside an IBD in Cameo and you use the Refactor > Convert To to switch between a Port and a Part Property you'll see that it correctly jumps from other being displayed as a Port symbol on the boundary or as a Part symbol completely inside its owning Block.
This aggregation rule applies to both 'port' and 'part':
Even though the UML Port metaclass extends the UML Property metaclass, it is not considered a part in the sense described above.
One thing that can be a bit confusing is that in SysMLv1 there is no actual stereotype PartProperty in SysMLv1. The Magic Cyber-Systems Engineer® (Cameo Systems Modeler®) tool has a dedicated extension PartProperty, which it uses as part of enforcing the rules described for the SysMLv1 'part property', but that's a tool implementation concern (and not inconsistent with the SysMLv1 spec).