2

我有用爱因斯坦谜语猫头鹰填充的 OWLIM 存储库。 链接1 -链接2 。是否可以使用 sparql 从 OWLIM 查询推断的知识?要获得与 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    
...
4

1 回答 1

1

是的,这是可能的,但这取决于您的 OWLIM 存储库是如何配置的。

OWLIM 使用的推理规则集在您首次创建存储库时设置为配置参数 - 有关详细信息,请参阅配置文档。显然,如果您已将其设置为使用空规则集,则它根本不会进行任何推理。根据您选择的规则集(有几个级别的表达性),它将能够推断出或多或少的蕴涵三元组(规则集的表现力越强,蕴涵的信息就越多)。

如果您的 OWLIM 存储库配置正确,查询将自动检索推断信息以及显式语句。

当然,这也取决于是否真的可以推断出任何东西。您的查询在 Protege 和 OWLIM 中给出相同结果这一事实可能仅仅意味着 OWLIM确实进行了推理,但没有找到任何与您的查询匹配的推断信息。

于 2015-04-01T21:27:38.593 回答