2015-04-22 2 views
1

Со следующим ФРР в Blazegraph (взято из this answer):Почему сова: аргументы ограничения не работают в Blazegraph?

: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 

Что мне не хватает?

ответ

2

Есть некоторые проблемы с синтаксисом RDF, но основная причина заключается в том, что Blazegraph не поддерживает OWL Reasoning из коробки. См. Текущий support. Там была некоторая работа и ELK Reasoner.

Что касается RDF в этом примере, это обновление, которое проверяется для загрузки в Blazegraph 1.5.1. Он включает обратную связь выше и добавляет пространства имен. Я создал файл properties (test.properties) с вашими свойствами выше и загрузил Blazegraph с исполняемым банком из Sourceforge.

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

Перейти к верстаке: http://localhost:9999/bigdata/ и вставьте RDF ниже в закладке «Update» на верстаке выбора «RDF данных» в формате «Черепаха».

@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

Причина, как представляется, в том, что в

: Морковь РДФ: Тип: овощи,

вы начинаете Морковь с заглавной буквы, но в

:eats :carrot . 

вы используете строчные буквы.

+0

Но предположительно морковь - это человек, который является * экземпляром Моркови.Поскольку ест - свойство объекта, не имеет смысла говорить, что «Джон ест Морковь», поскольку свойства объекта связывают людей с другими людьми, а не с классами. –

+0

Я думаю, что Морковка здесь индивидуальна, такая же, как морковь. Просто не обязательно одно и то же. – Ignazio

+0

Как полное определение Морков содержит rdf: тип сова: NamedIndividual, я думаю, что это просто опечатка –

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), этого должно быть достаточно, чтобы вы могли сделать вывод: Джон является: Вегетарианцем (по крайней мере, согласно этому нестандартному определению вегетарианца).

Смежные вопросы