- From: Harshvardhan J. Pandit <me@harshp.com>
- Date: Mon, 30 Oct 2023 20:18:52 +0000
- To: semantic-web@w3.org
Hi All. (as always) Thank you for your thoughts and collective experience(s). Perhaps I should explain my question and thinking better here which is that superClassOf has its uses. My use-case is creating taxonomies where I want to express relations with external vocabularies/ontologies. For example, I have dpv:Policy in the DPV ontology and I want to express that odrl:Policy from the ODRL ontology is a subclass of this. In the RDF serialisation with rdfs:subClassOf the triples related to dpv:Policy are not in a single place because the subjects are different. E.g. dpv:Policy skos:prefLabel "Policy"@en . # 1000 lines later odrl:Policy rdfs:subClassOf dpv:Policy . Instead, I find it nicer and semantically correct to have: dpv:Policy rdfs:superClassOf odrl:Policy. where no reasoning or querying is required, the information I *want* to express is recorded exactly, and I am also not making statements about IRIs not under my control. Regarding direction of properties, I like how SKOS gives both broader/narrower even if they are inverse relations of each other - because it allows us to make appropriate statements about the 'subject' concept instead of just using broader and switching subject and object. I understand if such use was not 'foreseen' in RDF/RDFS, and if it is considered to be too niche or trivial. However, I find it immensely helpful when working with the concepts and especially when I am producing documentation as the RDF matches the through process, e.g. description of a concept as all triples where it is the subject. --- further notes --- I am well aware that we can use SPARQL and other querying/reasoning to derive parent/super classes using rdfs:subClassOf. However, because there is no mechanism to *store* the results, I have to run this query every single time I want a concept's sub-classes. e.g. given the graph: :A rdfs:subClassOf :X . :B rdfs:subClassOf :X . I have to run this query every time: `SELECT ?c WHERE { ?c rdfs:subClassOf X }` - which means I *must* have a query engine - instead if there was a way to 'store' ?c (which is the superclass relation) - then I only need a RDF parser. This also makes a difference when considering discrete sets of information, e.g. in the earlier example, if A and B are in graph G1 and X is in graph G2, then the only way for X to express A and B are its subclasses is to include those triples from G1 in G2. Instead, having a superclass relation with X as the subject here is better aesthetics and semantics: G1 { # A and B are 'native' to this graph :A rdfs:subClassOf :X . :B rdfs:subClassOf :X . } G2 { # X is 'native' to this graph :A rdfs:subClassOf :X . # we have no 'control' over :A :B rdfs:subClassOf :X . # we have no 'control' over :B :X rdfs:superClassOf :A, :B . # we have 'control' over :X } --- Regards, Harsh On 30/10/2023 16:52, Miguel wrote: > Hi Harshvardhan, > just to further elaborate, with that argument you could support the > explicit definition of the inverse of any object property (excluding > symmetric properties). > Some vocabularies do indeed adopt that convention. > > The problem with that is that at the syntactic level you have always two > ways (for each pair of related resources) to represent the same meaning. > Only if you explicitly state in OWL the relationship between the two > properties with the inverseOf expression *and* perform inference, then > the two versions are reconciled. > > Furthermore, the direction in which a property is defined does not (at > least in theory) imply a specific favoured direction for traversing it, > as shown in the SPARQL examples by Antoine Zimmermann. > > Best regards, > Miguel > > On Mon, Oct 30, 2023 at 5:47 PM Antoine Zimmermann > <antoine.zimmermann@emse.fr <mailto:antoine.zimmermann@emse.fr>> wrote: > > rdfs:superClassOf (respectively rdfs:superPropertyOf) does not exist in > any standard, nor any term equivalent to it. > > If it did, it would not add anything to reasoning or querying. If you > want to list all subclasses of a class <C>, you can write: > > SELECT ?subclass WHERE { > ?subclass rdfs:subClassOf <C> . > } > > and if you want the list of superclasses of a class <C>, you write: > > SELECT ?superclass WHERE { > <C> rdfs:subClassOf ?superclass . > } > > > What use cases would make it harder and more painful to write: > > :A rdfs:subClassOf :B > > than: > > :B rdfs:superClassOf :A > > ? > > > --AZ > > Le 28/10/2023 à 14:21, Harshvardhan J. Pandit a écrit : > > Hi. > > We have rdfs:subClassOf defined in a standardised specification > (RDFS). > > RDFS several times mentions 'superclass', but AFAIK there is no > property > > or relation to make this explicit, i.e. > > > > ```turtle > > :A rdfs:subClassOf :B . # exists > > :B rdfs:superClassOf :A . # does this exist anywhere? > > ``` > > > > I can intuit why subclass relations are the most common and > preferred > > methods of use - because anyone can extend the superclass from > anywhere. > > And that either assertion can be inferred from the other (sub to > super, > > vice-versa), but I also think having the superclass be 'aware' of > > subclasses is a good practice in maintaining ontologies e.g. to > get a > > list of all subclasses which would normally require a query each > time. > > > > (Likewise for rdfs:subPropertyOf and rdfs:superPropertyOf) > > > > Apologies in advance if this has already been answered somewhere (I > > would appreciate it if you point me to it). > > > > Regards, > > -- > Antoine Zimmermann > École des Mines de Saint-Étienne > 158 cours Fauriel > CS 62362 > 42023 Saint-Étienne Cedex 2 > France > Tél:+33(0)4 77 49 97 02 > http://www.emse.fr/~zimmermann/ <http://www.emse.fr/~zimmermann/> > -- --- Harshvardhan J. Pandit, Ph.D Assistant Professor ADAPT Centre, Dublin City University https://harshp.com/
Received on Monday, 30 October 2023 20:19:03 UTC