Optimierung des fachlichen Schnitts

Vorgehen

  • Subdomains sind bereits anhand von Namensschemata gebildet
  • Abhängigkeiten zwischen Subdomains werden über die Abhängigkeitsbeziehung der zugrundeliegenden Typen identifiziert

In [1]:
import py2neo
import pandas as pd
graph=  py2neo.Graph()
query="""
MATCH
    (s1:Subdomain)<-[:BELONGS_TO]-
    (type:Type)-[r:DEPENDS_ON*0..1]->
    (dependency:Type)-[:BELONGS_TO]->(s2:Subdomain)
RETURN s1.name as from, s2.name as to, COUNT(r) as x_number
"""
result = graph.run(query).data()
df = pd.DataFrame(result)

Graph-Abfrage-Ergebnis

Als Ergebnis wird die Anzahl der Beziehungen zwischen den Typen der Subdomänen geliefert.


In [2]:
df.head(10)


Out[2]:
from to x_number
0 Clinic Visit 4
1 Clinic Clinic 5
2 Person crossfunctional 1
3 Clinic Vet 5
4 Visit Visit 13
5 Owner Pet 4
6 Vet Person 1
7 Owner Owner 10
8 Visit Pet 9
9 Pet Visit 5

Visualisierungsdaten

  • Das Ergebnis wird in eine JSON-Datei abgelegt
  • Die Daten können direkt zur Visualisierung verwendet werden
  • Für die Visualisierung wird ein D3 Chord Diagramm genutzt

In [4]:
import json
json_data = df.to_dict(orient='split')['data']
with open ( "chord_data.json", mode='w') as json_file:
    json_file.write(json.dumps(json_data, indent=3))
json_data[:10]


Out[4]:
[['Clinic', 'Visit', 4],
 ['Clinic', 'Clinic', 5],
 ['Person', 'crossfunctional', 1],
 ['Clinic', 'Vet', 5],
 ['Visit', 'Visit', 13],
 ['Owner', 'Pet', 4],
 ['Vet', 'Person', 1],
 ['Owner', 'Owner', 10],
 ['Visit', 'Pet', 9],
 ['Pet', 'Visit', 5]]

Visualisierung

Das Chord-Diagramm zeigt die Abhängigkeiten zwischen Typen auf der fachlichen Subdomänen-Ebene:

Live Demo