ruby-rdf / sparql

Ruby SPARQL library
http://rubygems.org/gems/sparql
The Unlicense
88 stars 14 forks source link

SPARQL parsing drops the property paths when after a PROJECT #30

Closed abrisse closed 6 years ago

abrisse commented 6 years ago

When a property path follows a PROJECT operator, it seems dropped during the parsing:

sparql = %{
PREFIX ns:<http://ns.com>
CONSTRUCT {
   ?item ns:link ?target
}
WHERE {
  ?item ?link ?wrapper .
  {
    SELECT DISTINCT ?wrapper
    WHERE {
     ?item ?p ?wrapper .
    }
  }
  ?item ns:slot / ns:item ?target .
}
}

SPARQL.parse(sparql)

returns:

#<SPARQL::Algebra::Operator::Prefix:0x25a452c(( ((ns: <http://ns.com>)) 
(construct ((triple ?item ns:link ?target)) (join (bgp (triple ?item ?link ?wrapper))
(distinct (project (?wrapper) (bgp (triple ?item ?p ?wrapper))))) )) )>
gkellogg commented 6 years ago

It should produce the following:

(prefix ((ns: <http://ns.com>))
 (construct ((triple ?item ns:link ?target))
  (join
   (join
    (bgp (triple ?item ?link ?wrapper))
    (distinct (project (?wrapper)
     (bgp (triple ?item ?p ?wrapper)))))
   (path ?item (seq ns:slot ns:item) ?target))))