0

My question is short, I am confused about the above predicate. I have used it like this;

ex:Superclass a skos:Concept;
            skos:prefLabel "Superclass";
            skos:altLabel "Parent class";
            skos:hasTopConcept ex:Class, ex:ClassHierarchy .

It seems to me that this predicate is used the same way as Broader, can I get some clarification on this

Thank

Kale
  • 9
  • 7
  • you should have a look at https://www.w3.org/TR/skos-reference/#schemes to understand the purpose of `hasTopConcept` which is a subproperty of `skos:inScheme` – UninformedUser May 27 '20 at 06:18
  • Is it wrong to compare this predicate with broader? It seems like it fulfills the same purpose fo concepts – Kale May 27 '20 at 11:11
  • did you read the example 4.5? – UninformedUser May 27 '20 at 11:44
  • @UninformedUser Yes I read that. But for example, I am still unclear if the Skos:Narrower in the following example would be redundant or not because of the HasTopConcept: – Kale May 28 '20 at 10:37
  • `exc:Superclass a skos:Concept; skos:hasTopConcept exc:Class, exc:ClassHierarchy . skos:narrower exc:ClassHieararchy` – Kale May 28 '20 at 10:39
  • ` rdf:type skos:ConceptScheme ; skos:hasTopConcept . ` - this is the example. Please, recognize that a scheme uses the property `skos:hasTopConcept` to specify its top concept, i.e. from scheme to concept. A property like `skos:narrower` is used to relate two concepts. – UninformedUser May 28 '20 at 11:23
  • Oh okay I think I got it now thank you very much. So in my example, it would be more suitable to remove skos:hasTopConcept (As it is not relating to a scheme)? – Kale May 28 '20 at 12:06
  • @UninformedUser – Kale May 28 '20 at 18:34
  • It would be more suitable to include `skos:inscheme ` in my example I understand?@UninformedUser – Kale May 28 '20 at 18:54

1 Answers1

0

skos:ConceptScheme describes a knowledge organization system, a container of concepts. Usually, a concept exists in at most one scheme, since for example skos:notation is supposed to provide a value for the concept in its scheme (for equivalent concepts in different schemes, there are specific mapping relations).

Your usage is incorrect, since skos:hasTopConcept is used on a concept scheme, with a concept as its object. It means that the concept is in some way the most generic, the broadest, i.e. there is nothing broader in that scheme (but there could be in general, in other schemes). The inverse is skos:topConceptOf, which implies skos:inScheme.

Assuming your scheme is used for denoting relations between specific classes, you probably intended to model it in this way:

ex:ClassRelations a skos:ConceptScheme ;
  skos:hasTopConcept ex:Class .

ex:Class a skos:Concept ;
  skos:topConceptOf ex:ClassRelations . # redundant since the inverse was already specified (inScheme is sufficient)

ex:Superclass a skos:Concept ;
  skos:broader ex:Class .

However I don't think this is a good use of SKOS here. We are modelling class relations here, and while "is superclass of" makes sense, it is not more specific than "is class of", since that makes no sense. Specifying a plain old RDF property works just as well.

Going with the "class hierarchy" concepts in some programming language, it would be more suited for an actual hierarchy, like types, reference/value types, interfaces etc., or specific classes/types like Object, String, Collection, List etc.

IS4
  • 11,945
  • 2
  • 47
  • 86