Display of Inheritance

I have the schema shown below:


However the graph of instances looks like:

A Client.csv file was imported that only mapped Joe to the Customer class. That is, Joe was not in the people csv file, but only in the client csv file. Why is Joe displayed as a person when he is a customer?

The semantics of inheritance seems to be lost?

I guess I am more familiar with UML which would not show Joe as an instance of person, but only of customer and would not show Joe has being an instance of two different types.

Classes in RDF and OWL are sets. The shown data model has Customer as a subclass as Person, meaning that all Customers are Persons; broadly, all subclass instances are a subset of the parent class.

Explorer shows the most specific class type possible, so since Customer is a subclass to Person, Joe is shown as Customer. Joe's type is Customer and Person since Customers are a subset of Persons.

Just to add to what Laura said: this is strictly a UI issue, not an issue with inheritance. Joe is also an instance of Person which you should be able to see. Assuming your SPARQL engine can see inferred triples if you do:

SELECT *
WHERE {?p rdf:type :Person}

Joe should show up. This is the way most tools handle it. It is the same in Protege. When you see the type of an instance you see the leaf classes not all the superclasses because you can just assume it is an instance of those superclasses and the UI would get cluttered, especially for deep class hierarchies, if you showed all the superclasses.

Michael
https://www.michaeldebellis.com/blog

Laura, I guess I am confused. The problem is that Explorer DOES NOT only show the most specific class type. It shows Joe as a person and not just a customer.

"Joe is also an instance of Person which you should be able to see", Is there a way to turn this off? I would prefer to only see the customer typeOf relationship.

I guess I am confused. You are describing the problem: "type of an instance you see the leaf classes not all the superclasses because you can just assume it is an instance of those superclasses and the UI would get cluttered, especially for deep class hierarchies, if you showed all the superclasses."

I do see the joe to person relationship so if this was a deep class hierarchy, it would get cluttered. Not sure what my confusion is. We seem to agree that you don't want to show typeOf relationships to superclasses, but that is what I see in the lower two images. Furthermore, the IsA relationship between customer and person is not shown even though people and customer type nodes are displayed.

Running tag:stardog:designer:test:data:Customer:Joe shows Joe as an instance of two types and the types are not related.

Explorer displays instances in the color of their most specific class type(s). In Joe's case, this is Customer. Explorer also displays type associations between a Class and an instance, because Joe has multiple types we show a type association between Joe and Customer and Joe and Person.

Explorer allows you to toggle off displaying model concepts if you do not want to see class definitions in addition to instances in the graph options.