Skip to content

Relationship properties not able to get  #284

Open
@Hashdhi

Description

@Hashdhi

Schema

type Person {
  name: String
  age: Int
  livesIn : Location @relation(name:"LIVES_IN", direction: OUT)
  livedIn : [Location] @relation(name:"LIVED_IN", direction: OUT)
  born : Birth
  died : Death
}
interface Temporal {
  date: String
}
type Birth implements Temporal @relation(name:"BORN") {
  from: Person
  to: Location
  date: String
}
type Death implements Temporal @relation(name:"DIED",from:"who",to:"where") {
  who: Person
  where: Location
  date: String
}
interface Location {
  name: String
  founded: Person @relation(name:"FOUNDED", direction: IN)
  sort_Arg: String
}
type City implements Location {
  name: String
  founded: Person @relation(name:"FOUNDED", direction: IN)
  sort_Arg: String
  city_Arg: String
}
type Village implements Location {
  name: String
  founded: Person @relation(name:"FOUNDED", direction: IN)
  sort_Arg: String
  villageArg: String
}

there are two problems

  1. Unable to get only Relationship Property
query {
  persons{
      born{
          date
      }
  }
}

Cypher

MATCH (persons:Person)
CALL {
	WITH persons
	OPTIONAL MATCH (persons)-[personsBorn:BORN]->(personsBornTo:Location)
	RETURN personsBorn {
		.date
	} AS personsBorn LIMIT 1
}
RETURN persons {
	born: personsBorn
} AS persons

issue is there is no Location node . Location is interface .

  1. query interface
query {
  persons{
      born{
          date
          to {
              name
          }
      }
  }
}
MATCH (persons:Person)
CALL {
	WITH persons
	OPTIONAL MATCH (persons)-[personsBorn:BORN]->(personsBornTo:Location)
	RETURN personsBorn {
		.date,
		to: personsBornTo {
			.name,
			__typename: head([label IN labels(personsBornTo) WHERE label IN $personsBornToValidTypes])
		}
	} AS personsBorn LIMIT 1
}
RETURN persons {
	born: personsBorn
} AS persons

replaced param : personsBornToValidTypes=[City, Village]

Neo4j db version 4.4.3
lib version : 1.6.0

Test data :

CREATE
  (u1:Person {name: 'Hashi',age:10})

CREATE
  (u1:City {name: 'Bangalore'})
  
CREATE (a)-[r:BORN{date:'23-12-2013'}]->(b)
RETURN type(r), r.date

Two node [Person,City] one Relationship BORN

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions