Ich versuche eine SPARQL-Abfrage zu erstellen, die die Schüler eines Lehrers findet und alle Lehrer mit alle diese Schüler findet (sie können mehr haben Studenten).Einen Satz finden, der alle Werte eines Originalsatzes in einer SPARQL-Abfrage enthält
Dies ist, was ich bisher:
SELECT ?otherTeacher
WHERE {
VALUES ?teacher {$teacher}
?teacher hasStudent ?student .
?otherTeacher hasStudent ?student .
FILTER(?teacher <> ?otherTeacher)
}
Hier sind die zu erwartenden Fälle mit den unten stehenden Daten:
- Wenn teacher1 gegeben ist, zeigt teacher3 sollte nur bis (teacher3 alle Schüler unterrichtet, die teacher1 lehrt).
- Wenn teacher2 angegeben ist, sollten sowohl teacher1 als auch teacher3 angezeigt werden (sowohl teacher1 als auch teacher3 unterrichten alle Schüler, die teacher2 unterrichtet).
- Wenn Lehrer3 angegeben ist, sollten keine Lehrer auftauchen (kein anderer Lehrer unterrichtet alle Schüler, die Lehrer3 unterrichtet).
<teacher1> <hasStudent> "Alice" .
<teacher1> <hasStudent> "Bob" .
<teacher1> <hasStudent> "Charlie" .
<teacher2> <hasStudent> "Alice" .
<teacher2> <hasStudent> "Dan" .
<teacher3> <hasStudent> "Alice" .
<teacher3> <hasStudent> "Bob" .
<teacher3> <hasStudent> "Charlie" .
<teacher3> <hasStudent> "Dan" .
Wie füge ich eine Anforderung, dass? OtherTeacher alle Schüler hat das? Lehrer hat (dass der neue Satz enthält mindestens alle Elemente des ursprünglichen Satzes)?
Bitte teilen Sie die Daten in Turtle oder N-Triples-Format. Ich möchte die Daten nicht zum Testen neu erfinden ... – AKSW
@AKSW Ich habe eine Bearbeitung vorgenommen - lassen Sie mich wissen, wenn die Formatierung falsch ist. –
Nun, es ist nicht gültig Turtle Format ... fehlende Präfix Deklaration, fehlende Punkte als Zeilenende. Studenten sind Stringliterale? – AKSW