ppp225 commented :
schema
type Car {
carName: string
carStat: [Stat]
carContract: [Contract]
}
carName: string @index(hash) .
carStat: [uid] @reverse .
carContract: [uid] @reverse .
type Stat {
statName: string
}
statName: string @index(hash) .
type Contract {
contractID: string
contractDealer: Dealer
contractGroup: Group
}
contractID: string .
contractDealer: uid @reverse .
contractGroup: uid @reverse .
type Dealer {
dealerName: string
}
dealerName: string @index(hash) .
type Group {
groupName: string
groupStat: Stat
}
groupName: string .
groupStat: uid @reverse .
mutation
{
set {
<_:Ferrari> <carName> "Ferrari" .
<_:Porsche> <carName> "Porsche" .
<_:Speed> <statName> "Speed" .
<_:Handling> <statName> "Handling" .
<_:Ferrari> <carStat> <_:Speed>(statValue=1.0) .
<_:Ferrari> <carStat> <_:Handling>(statValue=0.6) .
<_:Porsche> <carStat> <_:Speed>(statValue=0.7) .
<_:Porsche> <carStat> <_:Handling>(statValue=0.9) .
<_:Dealer1> <dealerName> "Dealer1" .
<_:Dealer2> <dealerName> "Dealer2" .
<_:contract1> <contractID> "111" .
<_:contract2> <contractID> "222" .
<_:contract3> <contractID> "333" .
<_:contract4> <contractID> "444" .
<_:Ferrari> <carContract> <_:contract1> .
<_:Porsche> <carContract> <_:contract2> .
<_:Ferrari> <carContract> <_:contract3> .
<_:Ferrari> <carContract> <_:contract4> .
<_:contract1> <contractDealer> <_:Dealer2> .
<_:contract2> <contractDealer> <_:Dealer2> .
<_:contract3> <contractDealer> <_:Dealer1> .
<_:contract4> <contractDealer> <_:Dealer2> .
<_:group1> <groupName> "SpeedGroup" .
<_:contract1> <contractGroup> <_:group1> .
<_:contract2> <contractGroup> <_:group1> .
<_:contract3> <contractGroup> <_:group1> .
<_:contract4> <contractGroup> <_:group2> .
<_:group1> <groupStat> <_:Speed> .
<_:group2> <groupStat> <_:Handling> .
<_:Ferrari> <dgraph.type> "Car" .
<_:Porsche> <dgraph.type> "Car" .
<_:Speed> <dgraph.type> "Stat" .
<_:Handling> <dgraph.type> "Stat" .
<_:Dealer1> <dgraph.type> "Dealer" .
<_:Dealer2> <dgraph.type> "Dealer" .
<_:contract1> <dgraph.type> "Contract" .
<_:contract2> <dgraph.type> "Contract" .
<_:contract3> <dgraph.type> "Contract" .
<_:group1> <dgraph.type> "Group" .
}
}
query
query {
withFilter(func: Type(Car), first: 1) {
carName
S as carStat @filter(eq(statName, "Speed")) {
uid
statName
}
count(carStat @filter(eq(statName, "Speed"))) # one Stat node statName=Speed
carContract {
contractID
contractGroup {
groupName
groupStat @filter(uid(S)) { # empty, but shouldn't be
uid
statName
}
}
}
}
withoutFilter(func: Type(Car), first: 1) {
carContract {
contractGroup {
groupStat {
uid
statName # this is the one, it should be visible with filter
}
}
}
}
}
result
"data": {
"withFilter": [
{
"carName": "Porsche",
"carStat": [
{
"uid": "0x16",
"statName": "Speed" # one Stat node statName=Speed
}
],
"count(carStat)": 1,
"carContract": [
{
"contractID": "222",
"contractGroup": {
"groupName": "SpeedGroup" # here is missing
}
}
]
}
],
"withoutFilter": [
{
"carContract": [
{
"contractGroup": {
"groupStat": {
"uid": "0x16",
"statName": "Speed" # this is the one, it should be visible with filter
}
}
}
]
}
]
}