Michal Joštiak
Michal Joštiak

Reputation: 171

Is it possible to query inferred Einstein Riddle knowledge from OWLIM?

I have OWLIM repository populated with Einstein Riddle owl. Link1 - Link2. Is it possible to query inferred knowledge from OWLIM using sparql ? To get same results as on individual tab in Protege ?

SPARQL:

PREFIX riddle: <http://www.iis.nsk.su/persons/ponom/ontologies/einsteins_riddle_en.owl#>
SELECT DISTINCT ?kto ?co
WHERE { 
?kto riddle:drinks ?co .
?kto a owl:Thing .
?co a owl:Thing .

Protege and OWLIM have same result, only explicit knowledge.

co  kto 
---------------------------------------------
http://www.iis.nsk.su/persons/ponom/ontologies/einsteins_riddle_en.owl#tea  http://www.iis.nsk.su/persons/ponom/ontologies/einsteins_riddle_en.owl#Ukrainian

But (according to my information) in Protege, SPARQL query works only on existing knowledge and OWLIM build up repository with existing and inferred triples. So I expected inferred triples too.

P.S.: Query to get count of inferred triples (OWLIM):

SELECT (COUNT(*) as ?count)
FROM <http://www.ontotext.com/implicit>
WHERE {
   ?s ?p ?o .
}

returns 0.

** ** ** EDIT: ** ** **

My configuration:

#
# Sesame configuration template for a owlim repository
#
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix rep: <http://www.openrdf.org/config/repository#>.
@prefix sr: <http://www.openrdf.org/config/repository/sail#>.
@prefix sail: <http://www.openrdf.org/config/sail#>.
@prefix owlim: <http://www.ontotext.com/trree/owlim#>.

[] a rep:Repository ;
   rep:repositoryID "Riddle" ;
   rdfs:label "Einstein Riddle Getting Started" ;
   rep:repositoryImpl [
     rep:repositoryType "openrdf:SailRepository" ;
     sr:sailImpl [
       sail:sailType "owlim:Sail" ; 

       owlim:base-URL "http://www.iis.nsk.su/persons/ponom/ontologies/einsteins_riddle_en.owl#" ;

       # There must be exactly the same number of semicolon separated entries in
       # the defaulNS and imports fields
       owlim:defaultNS "http://www.iis.nsk.su/persons/ponom/ontologies/einsteins_riddle_en.owl#" ;
       owlim:imports "./ontology/zebra.owl" ;

       owlim:entity-index-size "5000000" ;
       owlim:repository-type "file-repository" ;
       owlim:ruleset "owl-max" ;
       owlim:storage-folder "storage" ;

       # OWLIM-SE parameters
       owlim:cache-memory "180m" ; 

       # OWLIM-Lite parameters
       owlim:noPersist "false" ;

       # Other OWLIM-SE parameters
       # owlim:enable-context-index "false" ;
       owlim:check-for-inconsistencies "true" ;
       # owlim:disable-sameAs "false" ;
       owlim:enable-optimization "true" ;
       owlim:enablePredicateList "true" ;
       # owlim:entity-id-size "32" ;                 # 32/40
       # owlim:fts-memory "20m" ;
       # owlim:ftsIndexPolicy "never" ;              # never/onStartup/onShutdown/onCommit
       # owlim:ftsLiteralsOnly "false" ;
       # owlim:in-memory-literal-properties "false" ;
       # owlim:enable-literal-index "true" ;
       # owlim:index-compression-ratio "-1" ;        # -1/10-50
       # owlim:owlim-license "" ;
       # owlim:predicate-memory "80m" ;
       # owlim:query-timeout "-1" ;
       # owlim:tokenization-regex "[\p{L}\d_]+" ;
       # owlim:tuple-index-memory "80m" ;
       # owlim:useShutdownHooks "true" ;
       # owlim:transaction-mode "safe" ;
       # owlim:read-only "false" ;

       # Other OWLIM-Lite parameters
       # owlim:jobsize "1000}" ;
       # owlim:new-triples-file ""

      ]
   ].

And it doesn't matter if I use owl2-rl or owl2-ql or w/e else. Always same result. Only number of inferred triples changes to positive.

08:51:40 Executing query 'Who drinks What'
co  kto 
---------------------------------------------
einsteins_riddle_en:tea einsteins_riddle_en:Ukrainian   

08:51:40 1 result(s) in 63ms.
08:51:40 Executing query 'Number of inferred triples'
count   
---------------------------------------------
"770"^^<http://www.w3.org/2001/XMLSchema#integer>   

Inferred triples are useless for me, sample of them:

p   s   o   
---------------------------------------------
rdf:type    rdf:type    rdf:Property    
rdf:type    rdfs:subPropertyOf  rdf:Property    
rdf:type    rdfs:subClassOf rdf:Property    
rdf:type    rdfs:domain rdf:Property    
rdf:type    rdfs:range  rdf:Property    
rdf:type    owl:equivalentClass rdf:Property    
rdf:type    psys:transitiveOver rdf:Property    
...

Upvotes: 2

Views: 455

Answers (1)

Jeen Broekstra
Jeen Broekstra

Reputation: 22052

Yes, this is possible, but it depends on how your OWLIM repository is configured.

The inference ruleset that OWLIM uses is set as a configuration parameter when you first create your repository - see the configuration documentation for details. Obviously, if you have set it to use an empty ruleset, it will do no inference at all. Depending on which ruleset you pick (there are several levels of expressivity), it will be able to infer more or less entailed triples (the more expressive the ruleset, the more entailed information).

If your OWLIM repository is configured correctly, queries will automatically retrieved inferred information along with the explicit statements.

Of course, it also depends on whether there actually is anything that can be inferred. The fact that your query gives the same result in Protege and OWLIM might simply mean that OWLIM does do inferencing, but didn't find any inferred information that matches your query.

Upvotes: 1

Related Questions