为什么猫头鹰:限制性推理不适用于Blazegraph?

时间:2015-04-22 18:45:19

标签: semantic-web owl inference reasoning blazegraph

在Blazegraph中使用以下RDF(取自this answer):

:eats rdf:type owl:ObjectProperty .

:Vegetable rdf:type owl:Class ;
       rdfs:subClassOf owl:Thing .

:Vegetarian rdf:type owl:Class ;
        owl:equivalentClass [ rdf:type owl:Restriction ;
                              owl:onProperty :eats ;
                              owl:someValuesFrom :Vegetable
                            ] .

:Carrot rdf:type :Vegetable ,
             owl:NamedIndividual .

:John rdf:type owl:NamedIndividual , owl:Thing ;
      :eats :carrot .

以下SPARQL返回空白:

select ?who
where 
{
  ?who a :Vegetarian .       
}

以下是Blazegraph命名空间配置(Blazegraph从命令行作为NanoSparqlServer运行):

com.bigdata.namespace.kb.spo.com.bigdata.btree.BTree.branchingFactor    1024
com.bigdata.relation.container  test-ng-2
com.bigdata.journal.AbstractJournal.bufferMode  DiskRW
com.bigdata.journal.AbstractJournal.file    bigdata.jnl
com.bigdata.journal.AbstractJournal.initialExtent   209715200
com.bigdata.rdf.store.AbstractTripleStore.vocabularyClass   com.bigdata.rdf.vocab.DefaultBigdataVocabulary
com.bigdata.rdf.store.AbstractTripleStore.textIndex false
com.bigdata.btree.BTree.branchingFactor 128
com.bigdata.namespace.kb.lex.com.bigdata.btree.BTree.branchingFactor    400
com.bigdata.rdf.store.AbstractTripleStore.axiomsClass   com.bigdata.rdf.axioms.OwlAxioms
com.bigdata.service.AbstractTransactionService.minReleaseAge    1
com.bigdata.rdf.sail.truthMaintenance   true
com.bigdata.journal.AbstractJournal.maximumExtent   209715200
com.bigdata.rdf.sail.namespace  test-ng-2
com.bigdata.relation.class  com.bigdata.rdf.store.LocalTripleStore
com.bigdata.rdf.store.AbstractTripleStore.quads false
com.bigdata.relation.namespace  test-ng-2
com.bigdata.btree.writeRetentionQueue.capacity  4000
com.bigdata.rdf.store.AbstractTripleStore.statementIdentifiers  true

我错过了什么?

3 个答案:

答案 0 :(得分:2)

有一些RDF语法问题,但根本原因是Blazegraph不支持开箱即用的OWL推理。查看当前的support。已经和ELK Reasoner做了一些工作。

关于此示例中的RDF,这是一个经过验证的更新,可以在Blazegraph 1.5.1中加载。它结合了上面的反馈并添加了命名空间。我使用上面的属性创建了一个属性(test.properties)文件,并使用Sourceforge中的可执行jar加载Blazegraph。

java -Xmx2g -Dbigdata.propertyFile=test.properties -jar bigdata-bundled.jar

转到工作台:http://localhost:9999/bigdata/并将下面的RDF粘贴到工作台上的“更新”选项卡中,选择“RDF数据”,格式为“Turtle”。

@prefix : <http://stackoverflow.com/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

:eats rdf:type owl:ObjectProperty .

:Vegetable rdf:type owl:Class ;
   rdfs:subClassOf owl:Thing .

:Vegetarian rdf:type owl:Class ;
   owl:equivalentClass [ rdf:type owl:Restriction ;
                          owl:onProperty :eats ;
                          owl:someValuesFrom :Vegetable
                        ] .

:Carrot rdf:type :Vegetable ,
         owl:NamedIndividual .

:carrot rdf:type owl:NamedIndividual , owl:Thing, :Carrot .

:John rdf:type owl:NamedIndividual , owl:Thing ;
          :eats :carrot .

然后,如果您转到查询选项卡并运行类似:

select * where { ?s ?p ?o }

你会看到OWLAxiomsVocabulary推断出的所有三元组。

答案 1 :(得分:1)

原因似乎是在

  

:胡萝卜rdf:类型:蔬菜,

你从大写字母开始胡萝卜,但在

 :eats :carrot .

你使用小写字母。

答案 2 :(得分:0)

此数据尚未完善:

:Carrot rdf:type :Vegetable ,
             owl:NamedIndividual .

:John rdf:type owl:NamedIndividual , owl:Thing ;
      :eats :carrot .

你还需要这样说:胡萝卜是一个类型的个体:胡萝卜,有一个断言,如:

:carrot rdf:type owl:NamedIndividual , owl:Thing, :Carrot .

然后,因为:胡萝卜将是一个实例:胡萝卜,和:胡萝卜是一个子类:蔬菜,你可以推断:胡萝卜是一个实例:蔬菜,因此:约翰:吃一些:蔬菜。如果Blazegraph支持OWL推理(例如,不仅仅是RDFS推理),那应该足以让你推断:John是a:素食主义者(至少根据素食主义者的非标准定义)。