在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
我错过了什么?
答案 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:素食主义者(至少根据素食主义者的非标准定义)。