Можно ли запросить предполагаемые знания Эйнштейна Риддла из OWLIM?

У меня есть репозиторий OWLIM, заполненный совой Эйнштейна Риддла. Ссылка1 - Ссылка2. Можно ли запросить предполагаемые знания из OWLIM с помощью sparql? Чтобы получить те же результаты, что и на отдельной вкладке в 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 и OWLIM имеют одинаковый результат, только явные знания.

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

Но (согласно моей информации) в Protege запрос SPARQL работает только на основе существующих знаний, а OWLIM создает репозиторий с существующими и предполагаемыми тройками. Таким образом, я ожидал, что предполагаемые тройки тоже.

PS: запрос для подсчета предполагаемых троек (OWLIM):

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

возвращает 0

** ** ** РЕДАКТИРОВАТЬ: ** ** **

Моя конфигурация:

#
# 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 ""

      ]
   ].

И не имеет значения, использую ли я owl2-rl или owl2-ql или w/e. Всегда один и тот же результат. Только количество предполагаемых троек изменяется на положительное.

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>   

Предполагаемые тройки для меня бесполезны, пример их:

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    
...

1 ответ

Да, это возможно, но это зависит от того, как настроен ваш репозиторий OWLIM.

Набор правил вывода, который использует OWLIM, задается в качестве параметра конфигурации при первом создании хранилища - подробности см. В документации по конфигурации. Очевидно, что если вы установили для него использование пустого набора правил, он вообще не будет делать вывод. В зависимости от того, какой набор правил вы выберете (существует несколько уровней выразительности), он сможет вывести более или менее влечет за собой трижды (чем более выразительным набор правил, тем больше информации).

Если ваш репозиторий OWLIM настроен правильно, запросы будут автоматически получать выведенную информацию вместе с явными утверждениями.

Конечно, это также зависит от того, есть ли на самом деле что-либо, что может быть выведено. Тот факт, что ваш запрос дает одинаковый результат в Protege и OWLIM, может просто означать, что OWLIM делает вывод, но не нашел никакой выводимой информации, соответствующей вашему запросу.

Другие вопросы по тегам