SPARQL: разделение BGP на несколько групп - PullRequest
0 голосов
/ 12 мая 2019

В предыдущем вопросе комментарий предполагает, что

 select ?x  ?y where {
      {?x rdf:type ex:someType}        
      {?x ex:someProperty ?y}
    }

похож (не идентичен) на:

select ?x  ?y where {
  ?x rdf:type ex:someType.
  ?x ex:someProperty ?y.
}

Используются одинаковые тройные шаблоны.Однако первый запрос содержит два BGP (каждый в шаблоне группы), а второй содержит один BGP (без шаблонов группы).Алгебра для первого запроса - JOIN между двумя BGPs, а алгебра второго - только BGP.

Алгебра первого запроса (Apache Jena)

(project (?x ?y)
  (join
    (bgp (triple ?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/someType>))
    (bgp (triple ?x <http://www.example.com/someProperty> ?y))))

Алгебра второго запроса (Apache Jena):

(project (?x ?y)
  (bgp
    (triple ?x <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.example.com/someType>)
    (triple ?x <http://www.example.com/someProperty> ?y)
  ))

В исходном вопросе ответ предполагает, что они не идентичны, и утверждает,

  1. Если вложение SPARQLподдерживается, то отдельные {} оцениваются отдельно.
  2. если вы используете метки bnodes в запросах, то ограничения пересекают {}
  3. , если вы добавляете ФИЛЬТРЫ, то они не применяются за пределами {}, в которые они записаны.
  4. егодругое абстрактное синтаксическое дерево.Все незначительные моменты, но которые могут вступить в игру позже.

Теперь давайте отложим пустые узлы (2) и различные синтаксические деревья (4) и спросим следующее: Дадут ли два запроса в любом случае разные результаты из-за filter (3) или entailment (1) ?Я не вижу никакой возможности для этого.Ну, те, кто придерживается другого мнения, не могли бы вы, , пожалуйста, показать на каком-нибудь примере?

1 Ответ

1 голос
/ 12 мая 2019

Сфера действия фильтра.

В:

   select ?x  ?y where {
        {?x rdf:type ex:someType FILTER (?y > 0 ) }        
        {?x ex:someProperty ?y}
   }

FILTER всегда ложен, потому что ?y не связан, поэтому выражение является ошибкой, а FILTER ложен независимо от ?x ex:someProperty ?y.

(3) и (4) связаны между собой.

...