Duplicating an edge with a different facet value

For now, you can’t do anything on the DB side.

If you want to have multiple information between two nodes. I recommend that you create an abstract queue between the two nodes. And within that queue are these (outsourced) relationships. It’s a way of doing it.

e.g.

{
  set {
    _:MONDO_0005027 <name> "MONDO:0005027" .
    _:MONDO_0005579 <name> "MONDO:0005579" .  
    _:MONDO_0010561 <name> "MONDO:0010561" .
    _:MONDO_0006748 <name> "MONDO:0006748" .

    _:queue_0005027_0 <to> _:MONDO_0005027 .
    _:queue_0005027_1 <to> _:MONDO_0005027 .
    _:queue_0005027_2 <to> _:MONDO_0005027 .
    _:queue_0005027_3 <to> _:MONDO_0005027 .

    _:MONDO_0005579 <is_a> _:queue_0005027_0 (origin="MONDO") .
    _:MONDO_0005579 <is_a> _:queue_0005027_1 (origin="EFO") .
    _:MONDO_0010561 <is_a> _:queue_0005027_2 (origin="MONDO") .
    _:MONDO_0006748 <is_a> _:queue_0005027_3 (origin="EFO") .  
    }
}

Query

{
  q(func: eq(name, "MONDO:0005027")){
    name
    is_a : ~to @normalize {
      ~is_a @facets {
       name: name
      }
    }
  }
}

Result

{
  "data": {
    "q": [
      {
        "name": "MONDO:0005027",
        "is_a": [
          {
            "name": "MONDO:0005579",
            "~is_a|origin": "MONDO"
          },
          {
            "name": "MONDO:0005579",
            "~is_a|origin": "EFO"
          },
          {
            "name": "MONDO:0010561",
            "~is_a|origin": "MONDO"
          },
          {
            "name": "MONDO:0006748",
            "~is_a|origin": "EFO"
          }
        ]
      }
    ]
  }
}

Facets, for now, has a lot of improvement to be done. There is a lot of open issues in the backlog. BTW, I think the issue bellow would fit your case.

https://github.com/dgraph-io/dgraph/issues/4493