alessio-cpt
alessio-cpt

Reputation: 21

Members of child class are not classified as members of superclass in LUBM benchmark

I am trying to run the LUBM benchmark but I am having some troubles with classification after reasoning.

The files I am using are:

The main ontology

The output of the LUBM generator 1.7

The problem is that members of GraduateStudent and UndergraduateStudent are not being classified as members of the super-class Student.

I tried Pellet, Hermit and Fact reasoners on Protege 5.0 and all have failed. Consequently, also the benchmark SPARQL query number 10 failed.

#-- Query10
#-- This query differs from Query 6, 7, 8 and 9 in that it only requires the
#-- (implicit) subClassOf relationship between GraduateStudent and Student, i.e., 
#-- subClassOf rela-tionship between UndergraduateStudent and Student does not add
#-- to the results.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ub: <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#>

SELECT ?X WHERE {
  ?X rdf:type ub:Student . 
  ?X ub:takesCourse <http://www.Department0.University0.edu/GraduateCourse0>
}

You can find a screenshot of my Protegé classification here (sorry I have not enough reputation to directly post the picture).

screenshot

On Protege 4.3 classification works with Pellet and Hermit, but the SPARQL query still fails.

I already modified the reasoner settings to show all inferred knowledge, so it is not because they are just hidden.

I find this behavior very confusing, especially considering this should be a proven benchmark. I guess there is a very trivial solution to it but I cannot find it, so any help would be much appreciated!

EDIT: I succeeded to run the benchmark. I manually copied the xml code of the ABox (the one I got from the generator) inside the TBox. In this way classification works on Protege 4 and through API. Also SPARQL queries work using snap SPARQL as suggested here. Classification is still NOT working on Protege 5. I am curious to know what was causing this.

Upvotes: 0

Views: 140

Answers (1)

RobV
RobV

Reputation: 28655

The generator alone only produces Data which is sufficient to answer a subset of the queries (Queries 1-3 and 14). In order for a SPARQL system to answer all the queries it needs to apply inference. How it does this is an implementation specific detail. Also for many systems inference is off by default and must be enabled.

Depending on the System being used you will likely need to provide the main ontology that you linked to your system and enable any appropriate settings that are needed.

It may be that SPARQL queries in Protege do not take into account inferred knowledge but I have never used protege so can't comment on that specific tool.

Upvotes: 1

Related Questions