Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
GitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
I think there are (at least!) two very different use cases for SKOS collections. The SKOS spec doesn't really distinguish them in detail, but the iso-thes (ISO 25964-1) extensions to SKOS does. In my opinion, this makes plain SKOS collections a bit underspecified, because they can be used for very different purposes.
Concept Groups (isothes:ConceptGroup) can be used for e.g. thematic grouping of concepts.
"Concept groups typically are constructed based on properties of the concepts. A complete overview is not in the scope of this mapping. In practice, a second thesaurus or classification system is sometimes used to tag the concepts of the thesaurus. It is advised to use the skos:inScheme (http://www.w3.org/2004/02/skos/core#inScheme) property on such a skos:Collection to relate it to its Thesaurus (see ISO 25964: isPartOf).. Use rdfs:label or xl:prefLabel for the (occasional) ConceptGroup label (1 per language). Optional label attributes typically are mapped to dc: (or dct:) properties: - dct:created - dct:modified These can be attached to the xl:Label instance that is the value of the xl:prefLabel. Depending on the value of the ISO conceptGroupType a sub-class of iso thes:ConceptGroup should be defined. e.g.: EUROVOC and UNESCO use - Domain - MicroThesaurus (an iso-thes:hasSubGroup of a Domain)"
Thesaurus Arrays (isothes:ThesaurusArray) can be used to subdivide the narrower concepts of a concept further, as in the "milk by source animal" example in the SKOS primer.
"Instances of ThesaurusArray should be instances of skos:OrderedCollection (a subclass of skos:Collection) if the array needs to be an ordered array (in ISO-25964 model: value of its Boolean attribute "ordered" is true). It is advised to use the skos:inScheme (http://www.w3.org/2004/02/skos/core#inScheme) property on such a skos:Collection to relate it to its Thesaurus (see ISO 25964: isPartOf). Concepts in a thesaurus array are sibling concepts in the thesaurus. The (occaional) node label of a thesaurus array is mapped to rdfs:label or xl:prefLabel. Optional node label attributes typically are mapped to dc: (or dct:) properties: - dct:created - dct:modified These can be attached (if needed) to the xl:Label instance that is the value of xl:prefLabel."
I think it would make sense in JSKOS to distinguish (at least optionally) between groups and arrays. It might also make sense to support the iso-thes relations that are specific to these classes, for example isothes:superGroup.
In YSO we use ConceptGroups to express a thematic classification of concepts, and ThesaurusArrays to subdivide narrower concepts. For example, "clothes" have been subdivided into e.g. "clothes by user group" (children's clothes, military uniforms) and "clothing by material" (leather clothes, fur garments).