Можно ли запросить предполагаемые знания Эйнштейна Риддла из 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 делает вывод, но не нашел никакой выводимой информации, соответствующей вашему запросу.