The question is inspired by that article ( see Wiki as a first reading on the topic). This is an actual topic of modern mathematical physics. Here is my (partly successful) attempt to implement such graphs in Mathematica.
Let a graph be located in Disk[{0,0},r] (of hyperbolic radius R = ArcCosh[1 + 2/(1 - r^2)]).
First, we create a random set of its vertices by
r = 99/100; R = ArcCosh[1 + 2/(1 - r^2)]; SeedRandom[1234];
vertices = Table[{RandomVariate[UniformDistribution[{0, 2*Pi}], 1][[1]],
RandomVariate[ProbabilityDistribution[Sinh[t]/(-1 + Cosh[R]), {t, 0, R}], 1][[1]]}, {j, 1, 30}];
, following formula (1) from the linked article with \[Alpha]=1.
Second, we create a random set of its edges by
edges = Apply[UndirectedEdge, #] & /@ RandomSample[Subsets[vertices, {2}], 80];
We choose 80 random two-elemented subsets of vertices by RandomSample[Subsets[vertices, {2}], 80]
and then transform the ones to edges by Apply[UndirectedEdge, #] & /@.
Now
Graph[vertices, edges, VertexCoordinates ->
Table[vertices[[j]] -> {vertices[[j]][[2]]*Cos[vertices[[j]][[1]]],
vertices[[j]][[2]]*Sin[vertices[[j]][[1]]]}, {j, 1, Dimensions[vertices][[1]]}]]
The coordinates of vertices are polar $(\phi,r)$ so we have to change these to cartesian coordinates.
The above is a somewhat unfinished work.
(i) Physicists often use the following construction: any two vertices $u$ and $v$ are connected by an edge if their hyperbolic distance
$\textrm{dist}H(u, v)$ is below a certain number $\rho$. Neither BernoulliGraphDistribution nor BarabasiAlbertGraphDistribution realize it. How to do it?
(ii) In the above edges are drawn as lines. How to draw edges as hyperbolic lines ( compare (a) and (b) in Fig. 1) ?


EdgeShapeFunctionis not useful here at all. – user64494 May 10 '22 at 10:48DistanceFunction(see (https://reference.wolfram.com/language/ref/DistanceFunction.html) is too poor. – user64494 May 10 '22 at 10:52EdgeShapeFunction. Either you do this, or you abandonGraphcompletely and draw the graph completely manually. I am not aware of any other option. SoEdgeShapeFunctionis the option to use. – Szabolcs May 10 '22 at 11:04DistanceFunction, but the documentation of the function that you want to use it from, i.e.NearestNeighborGraphorDistanceMatrix(whichever you choose to work with). Also, please be specific about what you tried and where you got stuck. This seems like a fairly trivial problem to solve, other than having to look up / derive the formulas for the appropriate sampling of points on the Poincaré disk, the correct distance function, and the shape of "lines" on the disk. No, there won't be anything built-in for these. You need to do it yourself. – Szabolcs May 10 '22 at 11:06DistanceFunction -> "SomePredefinedValue". You need to define the function yourself. The same for edge shapes. – Szabolcs May 10 '22 at 11:07