2009-08-04 10 views
0

Je exemple suivant tripletsFiltrage SPARQL Résultats

r1 -> property -> resourceA 
r1 -> property -> resourceB 
r1 -> property -> resourceC 
resourceA -> name -> word1 
resourceB -> name -> word2 
resourceC -> name -> word4 

r2 -> property -> resourceD 
r2 -> property -> resourceE 
r2 -> property -> resourceF 
resourceD -> name -> word1 
resourceE -> name -> word2 
resourceF -> name -> word3 

r3 -> property -> resourceG 
r3 -> property -> resourceH 
r3 -> property -> resourceI 
resourceG -> name -> word5 
resourceH -> name -> word6 
resourceI -> name -> word7 

Comme paramètre i utiliser mot1 et mot2. Je veux avoir tous les mots incl. word1 et word2, qui se produisent avec le mot1 et le mot2 ensemble.

Le résultat de cet exemple doit être:

word1 
word2 
word3 
word4 

Je ne sais vraiment pas, comment faire cette :(

Répondre

2

Si l'on suppose le prédicat name est la même pour tous les word s et il n'y a pas d'autres triplets avec le prédicat name:

SELECT DISTINCT ?w { 
    ?s <name> ?w 
} 
ORDER BY ?w 

Édité après que la question a été éditée:

SELECT DISTINCT ?w { # select each word only once 

    # match three properties under the same resource 
    ?r <property> ?p1, ?p2, ?p3. 

    # two of the properties must have names "word1" and "word2" 
    ?p1 <name> "word1" . 
    ?p2 <name> "word2" . 

    # third property name may be anything, including "word1" and "word2" 
    ?p3 <name> ?w . 
} 
ORDER BY ?w # return words in sorted order 
+0

cela fonctionne! génial! Merci beaucoup! :) – cupakob