Est-il possible de garantir que les résultats d'une requête transitive dans SPARQL reviennent dans l'ordre dans lequel ils ont été parcourus?Commande dans une requête SPARQL transitive
Ainsi, compte tenu de certaines données simples:
<http://example.com/step0> ex:contains <http://example.com/step1>
<http://example.com/step1> ex:contains <http://example.com/step2>
<http://example.com/step2> ex:contains <http://example.com/step3>
(en pratique, la relation pourrait répéter de nombreuses fois)
requête (en utilisant SPARQL 1.1):
SELECT ?parent
WHERE {
?parent ex:contains* <http://example.com/step3>
}
tel que vous reviendrait toujours [step0, step1, step2]. En essayant cela à Jena, je reçois des résultats cohérents mais ordonnés au hasard.
Sinon, ce serait bien si je pouvais revenir le parent et l'enfant à la marche transitif afin que je puisse réordonner à l'extérieur, mais je ne sais pas comment les deux se lient ?parent ex:contains* <http://example.com/step3>
et revenir les objets des relations intermédiaires sans écrire une requête imbriquée très lente avec filtrage.
Votre requête ne renvoie qu'un seul résultat qui est 'http:// example.com/step2', donc, je ne comprends pas pourquoi vous dites que ça marche à Iéna mais les résultats sont triés au hasard. Je ne peux pas voir que vous êtes déjà en train de résoudre le concept de transitivité ici car aucun chemin de propriété comme 'ex: contains *' n'est utilisé – AKSW
Désolé, j'ai omis le caractère le plus important de la question. Il était supposé être ex: contient *, j'ai mis à jour la question – Ben