Различните SPARQL машини за заявки дават различни резултати за DESCRIBE Query

Опитах една SPARQL заявка в две различни машини:

  1. Protege 4.3 - раздел за SPARQL заявка
  2. Йена 2.11.0

Докато заявката е една и съща, резултатите, върнати от тези два инструмента, са различни.

Опитах DESCRIBE заявка като следното:

DESCRIBE ?x
WHERE { ?x :someproperty "somevalue"}

Резултатите от protege ми дават кортежи, които приемат ?x като субект/обект; докато тези от jena са, които приемат ?x само като тема.

Въпросите ми са:

  1. Единен ли е синтаксисът на SPARQL?
  2. Ако искам DESCRIBE да работи като in protege, какво да правя в Йена?

person eastdog    schedule 22.01.2014    source източник
comment
Вижте също SPARQL DESCRIBE заявка.   -  person Joshua Taylor    schedule 22.01.2014


Отговори (1)


За да отговоря на първия ви въпрос, да, синтаксисът на SPARQL е еднакъв, тъй като сте използвали една и съща заявка и в двата инструмента. Но това, което мисля, че всъщност питате е дали резултатите за двата инструмента са различни или не? т.е. са семантиката на SPARQL uniform

В случай на DESCRIBE, тогава да, резултатите са изрично разрешени да бъдат различни от спецификацията на SPARQL, т.е. не, семантиката на SPARQL не е еднаква, но това е само в случая на DESCRIBE.

Вижте Раздел 16.4 DESCRIBE (информативно) от SPARQL спецификацията, която гласи следното:

Моделът на заявката се използва за създаване на набор от резултати. Формата DESCRIBE взема всеки от ресурсите, идентифицирани в решение, заедно с всички ресурси, директно назовани от IRI, и сглобява единична RDF графика, като взема „описание“, което може да дойде от всяка налична информация, включително целевия RDF набор от данни. Описанието се определя от услугата за заявка

Важната част от това са последните две изречения, които казват, че описанието се определя от услугата за заявки. Това означава, че отговорите и на Protege, и на Jena са верни, тъй като им е позволено да избират как да формират описанието.

Промяна на обработката на Jena DESCRIBE

За да отговорите на втората част от въпроса си, можете да промените начина, по който Jena обработва DESCRIBE заявки, като внедрите персонализиран DescribeHandler и свързан DescribeHandlerFactory. След това трябва да регистрирате вашата фабрика по следния начин:

DescribeHandlerRegistry.get().set(new YourDescribeHandlerFactory());
person RobV    schedule 22.01.2014