Quality Check

Multiple Subtops

Situation

There are three immediate subclasses of meta:Top ("subtops"): Function, Role and Entity Type.

Problem

As they are disjoint, any subclass of more than one of them would be empty, which we assume to be an error and thus show here.

Solution

Automatically generate offending classes below and manually remove all but one of the subtop statements for each of them.

Inconsistent Subtop with Subclass

Situation

In addition to direct subclass relations, we model the transitively implied subclass relation to a subtop using the meta:subtop relation. Other knowledge bases may handle this differently, for example DBpedia always explicitly defines all superclasses.

Problem

If A is subclass of B and A and B have different disjoint superclasses C and D, this implies that A is empty, similar to the multiple subtops problem.

Solution

Manually unify the subtops of the subclass-superclass pairs below.

subClassOf and component

Situation

In addition to the subclass relation, we also have the similar but different component relations.

Problem

If A is subclass of B and A is also a component of B (or vice versa in the other direction), this seems syntactically wrong.

Solution

Manually decide for one of the relations. If a component relation is chosen and the supercount is only 1, a new superclass needs to be specified.

redundant superclass

Situation

The subClassOf relation is transitive.

Problem

If A is subClassOf B and B is subClassOf C then any explicit triple of A subClassOf C is redundant.

Solution

Delete the explicit triple A subClassOf C.

SKOS Link to Different Subtop

Situation

The different SNIK subontologies are linked mostly using skos:closeMatch, skos:narrowMatch and skos:broadMatch, which which imply owl:equivalentClass, rdfs:subClassOf and the inverse of rdfs:subClassOf.

Problem

For the same reasons mentioned for multiple subtops and inconsistent subtop, we assume an error if the ends of a link have a different subtop.

Solution

Remove all interlinks between classes with different subtops.

Subclass Cycles

Situation

Classes are sets of individuals and can be subclasses (subsets) of other classes.

Problem

Subclass cycles (A subclass of B ... subclass of A) collapse all members of the cycle to the same set, which is assumed to be unintentional.

Solution

Find subclass cycles below and and manually remove at least one of them. Because of the limitiations of SPARQL 1.1 property paths, we cannot select the full cycle but only give all pairs of classes on a cycle.

Missing label

Situation

All classes should have a label.

Problem

Some classes don't have a specified label.

Solution

Show classes with missing label and manually add labels.

Missing superclass

Situation

For easier exploration, visualization and understanding, we want to group all our classes in a more or less balanced tree based on the subclass/superclass relation.

Problem

Some classes don't have a specified superclass and thus are not connected to the rest of the hierarchy.

Solution

Because nearly all have a subtop statement, we use this automatically to add a superclass statement to the graph http://www.snik.eu/ontology/virtual for classes that don't have one already. As this creates a very unbalanced tree, you can display those classes below and try to find a more specific superclass for them.

Undefined Objects

Situation

If a concept is used as the object in some triple, then it should have its own attributes (occur as a subject).

Problem

Sometimes concepts occur as only as an object but not as a subject.

Solution

The responsible extractors for the respective subontologies need to add statements for the objects listed below.

Domain Violation

Situation

Each SNIK property has a domain that defines allowed subjects.

Problem

Some classes are used as a subject for a triple without being a direct or transitive subclass of the defined domain of the property.

Solution

The offending triples should be removed or remodelled to conform to the domain.

Range Violation

Situation

Each SNIK property has a range that defines allowed objects.

Problem

Some classes are used as an object for a triple without being a direct or transitive subclass of the defined range of the property.

Solution

The offending triples should be removed or remodelled to conform to the range.

Class URL Naming Convention Violations

Situation

Class URLs should conform to UpperCamelCase.

Problem

Naming conventions weren't clearly set from the beginning and some pecularities are not widely known, for example abbreviations such as IbmMachine, not IBMMachine.

Solution

Manually correct offending class URLs.

Property URL Naming Convention Violations

Situation

Property URLs should conform to lowerCamelCase.

Problem

Naming conventions weren't clearly set from the beginning and some pecularities are not widely known, for example abbreviations such as updatesAtm, not updatesATM.

Solution

Manually correct offending property URLs.

Missing Definition

Situation

Every class should have a definition from the book.

Problem

Some don't.

Solution

Try to find a definition in the source.

Literals with Semicolons

Situation

We use semicolons for multiple properties in our extraction tables to hold multiple values.

Problem

Semicolons are rarely used in the textbooks, especially for short strings and outside of definitions. Thus they hint at semicolons being used at the wrong place or at errors in the conversion script.

Solution

Generate all literals containing semicolons except those from definitions of more than 100 characters.

Classes with too many subclasses

Situation

The subclass hierarchy should ideally be a more or less balanced tree.

Problem

In practice, the hierarchy is too flat.

Solution

List all classes with more than 20 subclasses.

No Restriction

Situation

Classes are connected to other classes mostly by the subclass hierarchy and by restrictions.

Problem

Some classes are isolated from all others, limiting their use and preventing them from being connected to the vizualization graph.

Solution

List all classes that are not connected to other classes by restrictions. Because we already covered the hierarchy, we are not taking it into account here. Because there are over 1000 of those cases, we only list the first 100. They are not necessarily faulty but it may be worthy to investigate if they can be connected in some way.

Non-HTTP URI

Situation

Our URIs begin with http://...

Problem

Tools like the OntoWiki sometimes fail to expand a prefix and thus create URIs that have an incorrect prefix.

Solution

List all triples with URIs that are neither HTTP URIs nor blanknodes.

OWL 2 DL: Undefined Properties

Situation

Some URIs are used in the property position of a triple but are neither declared as owl:ObjectProperty, nor as owl:DataTypeProperty.

Problem

This violates the typing constraints of OWL 2 DL.

Solution

List all URIs are used in the property position of a triple but are neither declared as owl:ObjectProperty, nor as owl:DataTypeProperty. Exclude those defined in vocabularies like RDF, RDFS, OWL and so on.

OWL 2 DL: Multiply Defined Properties

Situation

Some URIs may be defined as more than one of owl:ObjectProperty, owl:DatatypeProperty and owl:AnnotationProperty.

Problem

This violates the typing constraints of OWL 2 DL.

Solution

List all URIs that are defined as more than one of owl:ObjectProperty, owl:DatatypeProperty and owl:AnnotationProperty.

OWL 2 DL: Class Typing Constraints

Situation

Some URIs may be used in axioms without being defined as an owl:Class.

Problem

This violates the typing constraints of OWL 2 DL.

Solution

List all URIs that occur in axioms but that aren't defined as an owl:Class.

Note: No table is shown when there is an empty result.