[ https://issues.apache.org/jira/browse/S2GRAPH-199?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16423349#comment-16423349 ]
Daewon Jeong commented on S2GRAPH-199: -------------------------------------- [~steamshon] That's a good question. {noformat} Label(name: friends, sourceServiceColumn: userColumn, targetServiceColumn: userColumn) {noformat} In the case of a label with the same source / target column as above, you can make `direction` as an argument. An example of a query that we use is shown below. {noformat} { kakao { user(id: "doyung") { out_friends: friends(direction: out) { user { like { movie { id } } } } in_friends: friends(direction: in) { user { like { movie { id } } } } } } } {noformat} p.s: `out_friends`, `in_friends` is an alias. You can use alias to return the same field with a different name. > Changing query more intuitively by using `columnName` instead of `from/to` in > label field name > ---------------------------------------------------------------------------------------------- > > Key: S2GRAPH-199 > URL: https://issues.apache.org/jira/browse/S2GRAPH-199 > Project: S2Graph > Issue Type: Improvement > Components: s2graphql > Reporter: Daewon Jeong > Assignee: Daewon Jeong > Priority: Major > Labels: usability > > h1. Changing query more intuitively by using `columnName` instead of > `from/to` in label field name > When fetching a Label Associated with a ServiceColumn, `from/to` Is used as > the Label field. > This indirectly represents the `source/target Column` in the Label. > You can also query the next step based on the corresponding `from/to`. > ColumnName defined in the Label schema to create a more intuitive query than > using `from/to`. > For example, suppose you have the following Services, ServiceColumns, and > Label. > {noformat} > service = Service(name: kakao) > userColumn = ServiceColumn(serviceName: kakao, name: user) > movieColumn = ServiceColumn(serviceName: kakao, name: movie) > Label(name: like, sourceServiceColumn: userColumn, targetServiceColumn: > movieColumn) > {noformat} > h2. Let's take an example of a query that comes from a user who likes movies > that user 'daewon' likes. > As is > {noformat} > query { > kakao { > user(id: "daewon") { > like(direction: out) { # By Label(like) shcmea, direction is fixed in > `out` > score > to { # `to` Represents the targetServiceColumn (movie) of `like` > label. > id > like(direction: in) { # By Label(like) shcmea, direction is fixed > in `in` > score > from { # In the case of the in direction, it is confused because > the directions `from` and `to` are relatively determined. > id > age > } > } > } > } > } > } > } > {noformat} > To be > {noformat} > query { > kakao { > user(id: "daewon") { > like { # For a Label(like) started with serviceColumn(user), the > direction is fixed to `out`. > score > movie { > id > like { # For a Label(like) started with serviceColumn(movie), the > direction is fixed to `in`. > score > user { > id > age > } > } > } > } > } > } > } > {noformat} > As you can see in the example above, we can know in advance how to query > `like` label according to the starting column(user/movie), and also use field > name instead of `from/to` to use columnName. -- This message was sent by Atlassian JIRA (v7.6.3#76005)