Is an predicate of an object a single value or a list?

I’m just wondering how to determine whether a property can occur once or several times in a class/object.

In the description of tag it is explicitly noted that it can take one to many values.
In the description of target it’s not mentioned.
In the description of cc its also not mentioned, but the sample shows an array.

i had hoped to see this in @stevebate owl, but i don’t see anything there either.

:tag a owl:ObjectProperty ;
  rdfs:label "tag"@en ;
  rdfs:comment "One or more \"tags\" that have been associated with an objects. A tag can be any kind of Object. The key difference between attachment and tag is that the former implies association by inclusion, while the latter implies associated by reference."@en ;
  rdfs:domain :Object ;
  rdfs:range [
    a owl:Class ;
    owl:unionOf ( :Object :Link )
  ] .

:target a owl:ObjectProperty ;
  rdfs:label "target"@en ;
  rdfs:comment "Describes the indirect object, or target, of the activity. The precise meaning of the target is largely dependent on the type of action being described but will often be the object of the English preposition \"to\". For instance, in the activity \"John added a movie to his wishlist\", the target of the activity is John's wishlist. An activity can have more than one target."@en ;
  rdfs:domain :Activity ;
  rdfs:range [
    a owl:Class ;
    owl:unionOf ( :Object :Link )
  ] .

In the AS2 TR, each property may or may not be defined as functional. A “functional” property can only have one value. Otherwise it can have multiple values.

2 Likes

RDF semantic structures are a concept that is not limited to ActivityPub or the fediverse. It is a way to describe associations with a “triplet” that is a subject, a target and a predicate, purely conceptually. For example “Jeff walks the dog” Jeff is the subject, the dog is the target, and “walks” is the relationship between the two, a predicate.

As such assocations between ideas (triplets) may have more than one. Whether a triplet with a particular predicate can exist more than once on a particular node is defined by FunctionalProperty which is simply a property that can be assigned only once.