Hi,
sorry I cleaned up the example a bit too much. So OPTIONAL is collecting
additional data like this:
OPTIONAL { ?concept skos:broader* [ skos:topConceptOf ?graph;
skos:prefLabel ?topConceptLabel ] }
But even with original example, OPTIONAL shouldn't return fewer rows?
On 15/03/2022 9.30, Lorenz Buehmann wrote:
Hi,
I'm probably misunderstanding the query, but what is the purpose of
the OPTIONAL here?
?graph is bound because of VALUES clause, ?concept is bound because of
the graph pattern before the OPTIONAL as well.
So ?graph and ?concept are bound on the left hand side of the
left-join aka OPTIONAL
Here is the algebra:
(join
(table (vars ?graph)
(row [?graph<http://www.yso.fi/onto/tero/>])
(row [?graph<http://www.yso.fi/onto/mesh/>])
)
(assign ((?graph ?*g0))
(leftjoin
(distinct
(project (?concept ?prefLabelm ?altLabelm)
(filter (= (lang ?prefLabelm) "fi")
(quadpattern
(quad ?*g0 ??0 rdf:first ?concept)
(quad ?*g0 ??0 rdf:rest ??1)
(quad ?*g0 ??1 rdf:first ?score1)
(quad ?*g0 ??1 rdf:rest ??2)
(quad ?*g0 ??2 rdf:first ?prefLabelm)
(quad ?*g0 ??2 rdf:rest rdf:nil)
(quad ?*g0 ??0 text:query ??3)
(quad ?*g0 ??3 rdf:first skos:prefLabel)
(quad ?*g0 ??3 rdf:rest ??4)
(quad ?*g0 ??4 rdf:first "aamiainen*")
(quad ?*g0 ??4 rdf:rest rdf:nil)
))))
(sequence
(graph ?*g0
(path ?concept (path* skos:broader) ??5))
(quadpattern (quad ?*g0 ??5 skos:topConceptOf ?graph)))))
Can you say what you want to achieve with the OPTIONAL maybe, it won't
return any additional data as far as I can see.
On 14.03.22 14:30, Mikael Pesonen wrote:
Hi, not directly related to Jena, but I have a query in which
optional clause limits the number of results. I thought it's never
possible. So below query returns less results with optional enabled.
Wonder why is that and what would be the correct way to get optional
data so than all rows are returned?
SELECT *
WHERE
{
VALUES ?graph {<http://www.yso.fi/onto/tero/>
<http://www.yso.fi/onto/mesh/>}
GRAPH ?graph
{
{
SELECT DISTINCT ?concept ?prefLabelm ?altLabelm WHERE
{
{
(?concept ?score1 ?prefLabelm) text:query
(skos:prefLabel "aamiainen*") .
FILTER ( (lang(?prefLabelm) = "fi" ))
}
}
}
# OPTIONAL { ?concept skos:broader* [ skos:topConceptOf ?graph] }
}
}
--
Lingsoft - 30 years of Leading Language Management
www.lingsoft.fi
Speech Applications - Language Management - Translation - Reader's and Writer's
Tools - Text Tools - E-books and M-books
Mikael Pesonen
System Engineer
e-mail: mikael.peso...@lingsoft.fi
Tel. +358 2 279 3300
Time zone: GMT+2
Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND
Turku Office
Kauppiaskatu 5 A
FI-20100 Turku
FINLAND