Modificateur de solution ORDER BY dans le modèle CONSTRUCT de SPARQL
Question
J'ai suivi la section SPARQL 1.1 10.2 CONSTRUCTION et avons la requête SPARQL suivante qui renvoie tous les triplets dont le sujet est de type Homework
et qui ont également une date d'événement.
CONSTRUCT { ?s ?p ?o } WHERE
{
GRAPH ?g { ?s ?p ?o } .
{ ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://lod.isi.edu/ontology/syllabus/Homework>
}.
{ ?s <http://lod.isi.edu/ontology/syllabus/hasEventDate> ?date}.
}
Maintenant, je souhaite récupérer les résultats par ordre croissant/décroissant de la date de l'événement, ?date
.J'ai essayé d'ajouter le order by
modificateur comme indiqué ci-dessous, mais il y a des erreurs d'analyse dans l'atelier OpenRDF.
CONSTRUCT { ?s ?p ?o } WHERE
{
GRAPH ?g { ?s ?p ?o } .
{ ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://lod.isi.edu/ontology/syllabus/Homework>
}.
{ ?s <http://lod.isi.edu/ontology/syllabus/hasEventDate> ?date}.
ORDER BY DESC(?date)
}
Encountered " "order" "ORDER "" at line 9, column 6. Was expecting one of:
"(" ... "{" ... "}" ... "[" ... <NIL> ... <ANON> ... "optional" ...
"graph" ... "minus" ... "filter" ... "true" ... "false" ... "bind" ...
"service" ... "values" ... <Q_IRI_REF> ... <PNAME_NS> ... <PNAME_LN> ...
<BLANK_NODE_LABEL> ... <VAR1> ... <VAR2> ... <INTEGER> ... <INTEGER_POSITIVE> ...
<INTEGER_NEGATIVE> ... <DECIMAL> ... <DECIMAL_POSITIVE> ...
<DECIMAL_NEGATIVE> ... <DOUBLE> ... <DOUBLE_POSITIVE> ...
<DOUBLE_NEGATIVE> ... <STRING_LITERAL1> ... <STRING_LITERAL2> ...
<STRING_LITERAL_LONG1> ... <STRING_LITERAL_LONG2> ...
La solution
Le problème est que votre ORDER BY
La clause n'est pas au bon endroit dans la requête.Il doit être après le crochet fermant qui ferme la clause WHERE :
CONSTRUCT { ?s ?p ?o }
WHERE
{
GRAPH ?g { ?s ?p ?o }
?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lod.isi.edu/ontology/syllabus/Homework> .
?s <http://lod.isi.edu/ontology/syllabus/hasEventDate> ?date .
}
ORDER BY ASC(?date)
Notez également que plusieurs accolades dans votre requête d'origine sont, même si elles ne sont pas tout à fait fausses, superflues.