File size: 3,602 Bytes
6851b52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import requests
#documentation de l'api : https://jdm-api.demo.lirmm.fr/schema

base_url = "https://jdm-api.demo.lirmm.fr"

# Faire une requête GET
def get_request(endpoint):
    response = requests.get(f"{base_url}{endpoint}")
    if response.status_code == 200:
        return response.json()
    else:
        print(f"Erreur : {response.status_code}")
        return None

# Récupérer un noeud à partir de son id
def nodeGetById(node_id):
    endpoint = f"/v0/node_by_id/{node_id}"
    return get_request(endpoint)

# Récupérer un noeud à partir de son nom
def nodeGetByName(node_name):
    endpoint = f"/v0/node_by_name/{node_name}"
    return get_request(endpoint)

# Récupérer les raffinements d'un noeud terme à partir de son nom
def nodeGetRefinements(node_name):
    endpoint = f"/v0/refinements/{node_name}"
    return get_request(endpoint)

# Récupérer les relations sortantes d'un noeud à partir de son nom    
def relationGetRelationsFrom(node_name):   
    endpoint = f"/v0/relations/from/{node_name}"
    return get_request(endpoint)

# Récupérer les relations entrantes à un noeud à partir de son nom    
def relationGetRelationsTo(node_name):
    endpoint = f"/v0/relations/to/{node_name}"
    return get_request(endpoint)

# Récupérer les relations entre deux noeuds à partir de leur noms
def relationGetRelationsFromTo(node1_name,node2_name):
    endpoint = f"/v0/relations/from/{node1_name}/to/{node2_name}"
    return get_request(endpoint)

# Récupérer tous les types de noeuds
def publicNodeTypeGetAll(): 
    endpoint = f"/v0/nodes_types"
    return get_request(endpoint)

# Récupérer tous les types de relations
def relationTypeGetAll():
    endpoint = f"/v0/relations_types"
    return get_request(endpoint)

relationTypes = relationTypeGetAll()

# Récupérer nom de la relation à partir du type
def getRelationName(type):
    if relationTypes:
        return relationTypes[type]['name']
    else:
        return None

# Récupérer nom de la relation à partir du type
def getRelationType(relationName):
    if relationTypes:
        return next((relationType['id'] for relationType in relationTypes if relationType['name'] == relationName), None)
    else:
        return None

# Filtrer par le nom du type de relation
def filterByRelationTypeName(result, relationName):
    if relationTypes:
        return [relation for relation in result['relations'] if relation['type'] == getRelationType(relationName)]
    else:
        return None

# Filtrer par l'id du type de relation
def filterByRelationTypeId(result, id):
    if relationTypes:
        return [relation for relation in result['relations'] if relation['type'] == id]
    else:
        return None



# Tests
# Afficher les relations entre deux termes
myNode1 = "chat"
myNode2 = "internet"
result = relationGetRelationsFromTo(myNode1,myNode2)

if result :
    print(f"Relations entre les termes '{myNode1}' et '{myNode2}':")
    for relation in result['relations']:
        print((f"Relation : "
        f"{getRelationName(relation['type'])}" 
        f" / weight : {relation['w']}"))

# Afficher les relations d'un type spécifié : exemple des synonymes       
result = relationGetRelationsFrom(myNode1)
if result :
    print(f"Synonymes du terme '{myNode1}':")
    synonyms = filterByRelationTypeName(result, "r_syn")
    #synonyms = filterByRelationTypeId(result, 5)
    if synonyms :     
        for synonym in synonyms :
            node = nodeGetById(synonym['node2'])
            if node :
                print((f"- {node['name']}"
                f" / weight : {synonym['w']}"))