When writing an RDF schema, I can do the following to declare that a committee consists of a number of persons:
<rdfs:Class rdf:ID="Committee" />
<rdf:Property rdf:ID="members">
<rdfs:domain rdf:resource="#Committee" />
<rdfs:range rdf:resource="#Person" />
</rdf:Property>
However, I have read that there is a fine semantic difference between defining individual persons as committee members as I did above, and the fact that only the whole group of given persons forms the committee. Hence, in such cases, one should consider using the RDF containers such as rdf:Bag.
My question is: How to declare such a "bag of Persons" in the RDF schema?
Any help is appreciated.
If you want to declare that ONLY these people form the commitee, you should use Collection
, not rdf:Bag
. The RDF tutorial at w3schools.com gives an example:
https://www.w3.org/TR/rdf-schema/#ch_collectionvocab
In the RDF schema you need to declate a property "hasMember
" or "member
". Its domain is a commitee, and its range is a member. Then, the RDF file can describe an unlimited number of members for a given commitee. If in the commitee resource you want to specify that these are the ONLY memebrs, you use a collection
. If you allow more members, use a rdf:Bag
.
Note: This does not mean it's impossible to define a "bag of members" or "collection of members" as the range of a property. You can take a look at existing simple ontologies on the web (there are hundreds of them written in RDFS) and compare how they define a similar concept.