Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top