Angesichts dieser Daten, wo jede Person optional ein "intelligentes" Prädikat haben kann und jede Abteilung keine oder mehrere Personen haben kann, muss ich Abteilungen finden, die nur die schlaue Menschen. Das Ergebnis sollte nur die Abteilungen 1 und 2 umfassen. Im Idealfall sollte das Ergebnis auch die "intelligenten" Objekte für jede Abteilung enthalten. Vielen Dank!SPARQL: Objekte mit allen Unterobjekten suchen, die einem Kriterium entsprechen
person:A p:type 'p' ;
p:smart 'yes' .
person:B p:type 'p' ;
p:smart 'maybe' .
person:C p:type 'p' .
department:1 p:type 'd' ;
p:has person:A, person:B .
department:2 p:type 'd' ;
p:has person:B .
department:3 p:type 'd' ;
p:has person:B, person:C .
department:4 p:type 'd' .
Ich mag diese Lösung wirklich! Ich frage mich, welcher ist in der Regel schneller, aber vielleicht gibt es nicht so viel Unterschied. Wenn ich Zeit habe, probiere ich es in einem kleinen "Benchmark" aus. Prost – AKSW
Ich sollte darauf hinweisen, dass diese Lösung darauf angewiesen ist, höchstens einen intelligenten Wert pro Person zu bringen. Es ist nicht schwer, komplexere Fälle zu lösen, aber sie sind weniger hübsch (die aggregierten Klauseln werden länger). Was die Geschwindigkeit anbetrifft, so vermute ich, dass es für die meisten vernünftigen Geschäfte keinen großen Unterschied gibt (d. H. Sie machen die Filterverbindungen in einer vernünftigen Reihenfolge), aber es wäre interessant zu testen. – user205512
Nun, zumindest ist Ihre Antwort die akzeptierte, also gibt es vielleicht einige Vorteile. Wäre interessant zu wissen, welche: D – AKSW