У меня проблема с запросом SPARQL для группирования элементов. Я использую http://kaiko.getalp.org/sparql, чтобы написать свой запрос.
Я использовал GROUP BY на поле. Поскольку было несколько элементов, мой результат представлял собой несколько строк, и я пытаюсь объединить их.
Вот мой оригинальный запрос.
SELECT distinct ?word ?poslexinfo ?posdbnary ?def ?syn ?ant
WHERE {
?f dbnary:describes ?lf.
?lf rdf:type ontolex:LexicalEntry .
?lf lime:language "de" .
?lf ontolex:canonicalForm ?wo .
?wo ontolex:writtenRep ?word .
OPTIONAL {?lf lexinfo:partOfSpeech ?poslexinfo} .
OPTIONAL {?lf dbnary:partOfSpeech ?posdbnary} .
?lf ontolex:sense ?os .
?os rdf:type ontolex:LexicalSense .
OPTIONAL {?os dbnary:antonym ?ant} .
OPTIONAL {?os dbnary:synonym ?syn} .
?os skos:definition ?defl .
?defl rdf:value ?def
} LIMIT 5
Результат:
word poslexinfo posdbnary def syn ant
"gay" http://www.lexinfo.net/ontology/2.0/lexinfo#adjective "Adjektiv" "sexuelle Neigungen zum eigenen Geschlecht zeigend" http://kaiko.getalp.org/dbnary/deu/homosexuell http://kaiko.getalp.org/dbnary/deu/hetero
"gay" http://www.lexinfo.net/ontology/2.0/lexinfo#adjective "Adjektiv" "sexuelle Neigungen zum eigenen Geschlecht zeigend" http://kaiko.getalp.org/dbnary/deu/homosexuell http://kaiko.getalp.org/dbnary/deu/bi
Обе эти строки отличаются только антонимом, и мой ожидаемый результат -
word poslexinfo posdbnary def syn ant
"gay" http://www.lexinfo.net/ontology/2.0/lexinfo#adjective "Adjektiv" "sexuelle Neigungen zum eigenen Geschlecht zeigend" http://kaiko.getalp.org/dbnary/deu/homosexuell http://kaiko.getalp.org/dbnary/deu/hetero|http://kaiko.getalp.org/dbnary/deu/bi
Я попытался выполнить приведенный ниже запрос, используя GroupBy и GroupConcat, но не уверен, что я здесь не так делаю.
Запрос:
SELECT distinct ?word ?poslexinfo ?posdbnary ?def ?syn (GROUP_CONCAT(?ant ; separator="|") AS ?ants)
WHERE {
?f dbnary:describes ?lf.
?lf rdf:type ontolex:LexicalEntry .
?lf lime:language "de" .
?lf ontolex:canonicalForm ?wo .
?wo ontolex:writtenRep ?word .
OPTIONAL {?lf lexinfo:partOfSpeech ?poslexinfo} .
OPTIONAL {?lf dbnary:partOfSpeech ?posdbnary} .
?lf ontolex:sense ?os .
?os rdf:type ontolex:LexicalSense .
OPTIONAL {?os dbnary:antonym ?ant} .
OPTIONAL {?os dbnary:synonym ?syn} .
?os skos:definition ?defl .
?defl rdf:value ?def
} GROUP BY ?word LIMIT 5
Когда я пытаюсь выполнить вышеуказанный запрос, я получаю эту ошибку.
Virtuoso 37000 Ошибка SP031: Компилятор SPARQL: Переменная? Syn используется в наборе результатов вне агрегата и не упоминается в предложении GROUP BY