It's a bug, I'm afraid.
A workaround is to use a different variable in each UNION branch and
combine them in the overall SELECT:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT
?stw ?stw_pref (COALESCE(?rel1, ?rel2) AS ?rel) ?thesoz_pref ?thesoz
WHERE {
{
SELECT DISTINCT ?stw ('=' as ?rel2) ?thesoz
WHERE {
?stw skos:exactMatch ?thesoz .
?stw skos:inScheme <http://zbw.eu/stw> .
?thesoz skos:inScheme <http://lod.gesis.org/thesoz/> .
}
} UNION {
SELECT DISTINCT ?stw ('<' as ?rel1) ?thesoz
WHERE {
?stw skos:broadMatch ?thesoz .
?stw skos:inScheme <http://zbw.eu/stw> .
?thesoz skos:inScheme <http://lod.gesis.org/thesoz/> .
}
} .
?stw skos:prefLabel ?stw_pref .
?thesoz skos:prefLabel ?thesoz_pref
}
Andy
On 28/06/11 16:09, Neubert Joachim wrote:
Out of two SKOS thesauri, I want to get an overview list of all mappings
(with different relations, like skos:exactMatch, skos:broadMatch, etc.)
I tried:
PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?stw ?stw_pref ?rel ?thesoz_pref ?thesoz
WHERE {
{
SELECT DISTINCT ?stw ('=' as ?rel) ?thesoz
WHERE {
?stw skos:exactMatch ?thesoz .
?stw skos:inScheme<http://zbw.eu/stw> .
?thesoz skos:inScheme<http://lod.gesis.org/thesoz/> .
}
} UNION {
SELECT DISTINCT ?stw ('<' as ?rel) ?thesoz
WHERE {
?stw skos:broadMatch ?thesoz .
?stw skos:inScheme<http://zbw.eu/stw> .
?thesoz skos:inScheme<http://lod.gesis.org/thesoz/> .
}
} .
?stw skos:prefLabel ?stw_pref .
?thesoz skos:prefLabel ?thesoz_pref
}
and got the error:
Variable used when already in-scope: ?rel in ("<" AS ?rel)
How could I work arround this? I suspect many of you had come across a
similar problems, and hopefully solved them somehow ...
Cheers, Joachim