### 2.1 KGCN layer

The predictive equation for judging whether the users are interested in vehicle information in the IOV system.

$$\mathop {\hat{y}}\nolimits_{uv} = F\left( {u,v|\theta ,Y,G} \right)$$

(1)

where *G* is the knowledge graph composed of entity-relation-entity triples, *Y* represents the sparse matrix of a given user's vehicle, *u* represents user, *v* represents Vehicles, \(\theta\) represents the set of learning parameters of the whole model.

#### 2.1.1 Measure users’ preference for different vehicle information relationships

$$\pi_{r}^{u} = g\left( {r,u} \right)$$

(2)

where *g* is aggregator, *r* represents relationship, *π* represents weight. Define function *g*: a certain function that can make *R*^{d} × *R*^{d} → *R*, here is an aggregator, used to calculate the score between the user and a certain. Where *d* is the dimension of the feature representation of the knowledge graph.

The real meaning here can be understood as (calculating the user’s preference for different relationships). For example, if a user pays much attention to the vehicle service information of the corresponding online ride-hailing, he will pay more attention to the number of vehicle service times, user evaluation and other information, and will be more willing to use high-quality vehicles based on these judgments. Here, *g* function is used to measure the user's preference for different vehicle information relationships.

#### 2.1.2 Use the linear combination of neighbor information to describe the neighborhood information of a node

$$\mathop v\nolimits_{N\left( v \right)}^{u} = \sum\nolimits_{e \in N\left( v \right)} {\mathop \pi \nolimits_{{\mathop r\nolimits_{v,e} }}^{u} } e$$

(3)

where *N*(*v*) is the set of all entities directly connected to entity *v* (that is, within one hop), Note that the weight *π* here is not only related to the relationship between the two nodes *v* and *e*, but also related to the characteristics of the corresponding user *u* at this time. The weight here is the *g* function scores of all entities *e* and relations *r* in *N*(*v*) corresponding to *v* and then normalized to formula 4.

$$\mathop \pi \nolimits_{{\mathop r\nolimits_{v,e} }}^{u} = \frac{{\exp \left( {\mathop \pi \nolimits_{{\mathop r\nolimits_{v,e} }}^{u} } \right)}}{{\sum\nolimits_{e \in N\left( v \right)} {\exp \left( {\mathop \pi \nolimits_{{\mathop r\nolimits_{v,e} }}^{u} } \right)} }}$$

(4)

where *N*(*v*) represents the set of all entities directly connected to entity *v* (that is, within one hop), where *e* is the characteristics of entity.

When calculating the representation of a given entity neighborhood, the vector scores of users and relationships are similar to the role of personalized filters. This processing is because the neighbor feature vectors are focused on the basis of these user-specific vectors.

#### 2.1.3 Control the number of neighbor users

$$S\left( v \right) \to \left\{ {e|e \in N\left( v \right)} \right\}$$

(5)

$$S\left( v \right)| = {\rm K}$$

(6)

where *N*(*v*) represents the set of all entities directly connected to entity *v* (that is, within one hop), *S*(*v*) is entity, (single-layer) accepting field, *e* is the characteristics of entity, *K* represents Hyperparameter, select *K* neighbor users.

In a real knowledge graph [7], there will be too many neighbor users in a certain node *v*, which will bring huge pressure to the calculation of the overall model. It does not use all its neighbor users, but randomly and uniformly sample a fixed-size set from its neighbor users. Instead, a hyperparameter *K* is defined. For each node *v*, only *K* neighbor users are selected for calculation. In other words, the neighborhood representation of *v* at this time is written as. In KGCN, because the calculation of the final feature of *v* is sensitive to these regions \(v_{S\left( v \right)}^{u}\).

#### 2.1.4 Define aggregator

The key point in the KGCN model is the fusion of the feature *v* of the entity and the neighbor feature \(v_{S\left( v \right)}^{u}\). Three types of aggregators are defined in KGCN. In this experiment, an additive aggregator is used for comparison experiments.

*Sum Aggregator.* The sum aggregator is to perform arithmetic addition of two eigenvectors, and then add a nonlinear transformation.

$$\mathop {{\text{agg}}}\nolimits_{{{\text{sum}}}} = \sigma \left( {W \cdot \left( {v + \mathop v\nolimits_{S(v)}^{u} } \right) + b} \right)$$

(7)

In the formula, *w* is conversion weight, *b* represents bias, *S*(*v*) represents physical (single-layer) acceptance field.

*Splicing aggregator* The splicing aggregator performs splicing operations on two feature vectors, and then adds a nonlinear transformation.

$$\mathop {{\text{agg}}}\nolimits_{{{\text{concat}}}} = \sigma \left( {W \cdot {\text{conact}}\left( {v,\mathop v\nolimits_{S(v)}^{u} } \right) + b} \right)$$

(8)

*Neighbor aggregator* The neighbor aggregator only uses the neighbor features of the entity *v*, and directly uses the neighborhood representation to replace the representation of the *v* node.

$$\mathop {{\text{agg}}}\nolimits_{{{\text{neighbor}}}} = \sigma \left( {W \cdot \mathop v\nolimits_{S(v)}^{u} + b} \right)$$

(9)