1

在 Blazegraph 中使用以下 RDF(取自此答案):

: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

我错过了什么?

4

3 回答 3

2

存在一些 RDF 语法问题,但根本原因是 Blazegraph 不支持开箱即用的 OWL 推理。查看当前支持。已经有一些针对 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 推断出的所有三元组。

于 2015-04-28T13:49:31.430 回答
1

原因似乎在于,在

:胡萝卜 rdf:type :蔬菜 ,

Carrot 以大写字母开头,但在

 :eats :carrot .

你使用小写字母。

于 2015-04-22T22:22:08.303 回答
0

该数据尚未完全形成:

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

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

您还需要说 :carrot 是一个 :Carrot 类型的个体,其断言如下:

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

然后,因为 :carrot 将是 :Carrot 的实例,并且 :Carrot 是 :Vegetable 的子类,您可以推断 :carrot 是 :Vegetable 的实例,因此 :John :eats :Vegetable。如果 Blazegraph 支持 OWL 推理(例如,不仅仅是 RDFS 推理),那应该足以让您推断 :John 是一个 :Vegetarian(至少根据素食的非标准定义)。

于 2015-04-23T00:45:00.120 回答