@@ -306,6 +306,30 @@ centralityWithHyperlinkInducedTopicSearchHITS() {
306
306
execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_1d_Label_Add.cypher" " ${@ } " " ${writePropertyName} Hub"
307
307
}
308
308
309
+ # Apply the centrality algorithm "Bridges".
310
+ # Requires an undirected graph projection and ignores weights. Thus, no weight property is needed.
311
+ #
312
+ # Required Parameters:
313
+ # - dependencies_projection=...
314
+ # Name prefix for the in-memory projection name for dependencies. Example: "type-centrality"
315
+ # - dependencies_projection_node=...
316
+ # Label of the nodes that will be used for the projection. Example: "Type"
317
+ centralityWithBridges () {
318
+ local CENTRALITY_CYPHER_DIR=" $CYPHER_DIR /Centrality"
319
+ local PROJECTION_CYPHER_DIR=" $CYPHER_DIR /Dependencies_Projection"
320
+
321
+ # Statistics
322
+ execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_10a_Bridges_Estimate.cypher" " ${@ } " " ${writePropertyName} "
323
+
324
+ # Stream to CSV
325
+ local nodeLabel
326
+ nodeLabel=$( extractQueryParameter " dependencies_projection_node" " ${@ } " )
327
+ execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_10d_Bridges_Stream.cypher" " ${@ } " > " ${FULL_REPORT_DIRECTORY} /${nodeLabel} _Centrality_Bridges.csv"
328
+
329
+ # Set "isBridge=true" on all relationships identified as Bridge
330
+ execute_cypher " ${CENTRALITY_CYPHER_DIR} /Centrality_10e_Bridges_Write.cypher" " ${@ } "
331
+ }
332
+
309
333
listAllResults () {
310
334
local CENTRALITY_CYPHER_DIR=" $CYPHER_DIR /Centrality"
311
335
@@ -334,25 +358,47 @@ runCentralityAlgorithms() {
334
358
listAllResults " ${@ } "
335
359
}
336
360
361
+ # Run all centrality algorithms that require an undirected graph projection.
362
+ #
363
+ # Required Parameters:
364
+ # - dependencies_projection=...
365
+ # Name prefix for the in-memory projection name for dependencies. Example: "package"
366
+ # - dependencies_projection_node=...
367
+ # Label of the nodes that will be used for the projection. Example: "centralityPageRank"
368
+ # - dependencies_projection_weight_property=...
369
+ # Name of the node property that contains the dependency weight. Example: "weight"
370
+ runUndirectedCentralityAlgorithms () {
371
+ time centralityWithBridges " ${@ } "
372
+ }
373
+
374
+
337
375
# -- Java Artifact Centrality ------------------------------------
338
376
339
377
ARTIFACT_PROJECTION=" dependencies_projection=artifact-centrality"
378
+ ARTIFACT_PROJECTION_UNDIRECTED=" dependencies_projection=${ARTIFACT_PROJECTION} -undirected"
340
379
ARTIFACT_NODE=" dependencies_projection_node=Artifact"
341
380
ARTIFACT_WEIGHT=" dependencies_projection_weight_property=weight"
342
381
343
382
if createDirectedDependencyProjection " ${ARTIFACT_PROJECTION} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} " ; then
344
383
runCentralityAlgorithms " ${ARTIFACT_PROJECTION} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} "
345
384
fi
385
+ if createUndirectedDependencyProjection " ${ARTIFACT_PROJECTION_UNDIRECTED} " " ${ARTIFACT_NODE} " " ${ARTIFACT_WEIGHT} " ; then
386
+ runUndirectedCentralityAlgorithms " ${ARTIFACT_PROJECTION_UNDIRECTED} " " ${ARTIFACT_NODE} "
387
+ fi
346
388
347
389
# -- Java Package Centrality -------------------------------------
348
390
349
391
PACKAGE_PROJECTION=" dependencies_projection=package-centrality"
392
+ PACKAGE_PROJECTION_UNDIRECTED=" dependencies_projection=${PACKAGE_PROJECTION} -undirected"
350
393
PACKAGE_NODE=" dependencies_projection_node=Package"
351
394
PACKAGE_WEIGHT=" dependencies_projection_weight_property=weight25PercentInterfaces"
352
395
353
396
if createDirectedDependencyProjection " ${PACKAGE_PROJECTION} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} " ; then
354
397
runCentralityAlgorithms " ${PACKAGE_PROJECTION} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} "
355
398
fi
399
+ if createUndirectedDependencyProjection " ${PACKAGE_PROJECTION_UNDIRECTED} " " ${PACKAGE_NODE} " " ${PACKAGE_WEIGHT} " ; then
400
+ runUndirectedCentralityAlgorithms " ${PACKAGE_PROJECTION_UNDIRECTED} " " ${PACKAGE_NODE} "
401
+ fi
356
402
357
403
# -- Java Type Centrality ----------------------------------------
358
404
378
424
379
425
MODULE_LANGUAGE=" dependencies_projection_language=Typescript"
380
426
MODULE_PROJECTION=" dependencies_projection=typescript-module-centrality"
427
+ MODULE_PROJECTION_UNDIRECTED=" dependencies_projection=${MODULE_PROJECTION} -undirected"
381
428
MODULE_NODE=" dependencies_projection_node=Module"
382
429
MODULE_WEIGHT=" dependencies_projection_weight_property=lowCouplingElement25PercentWeight"
383
430
384
431
if createDirectedDependencyProjection " ${MODULE_LANGUAGE} " " ${MODULE_PROJECTION} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} " ; then
385
432
runCentralityAlgorithms " ${MODULE_PROJECTION} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} "
386
433
fi
434
+ if createUndirectedDependencyProjection " ${MODULE_LANGUAGE} " " ${MODULE_PROJECTION_UNDIRECTED} " " ${MODULE_NODE} " " ${MODULE_WEIGHT} " ; then
435
+ runUndirectedCentralityAlgorithms " ${MODULE_PROJECTION_UNDIRECTED} " " ${MODULE_NODE} "
436
+ fi
387
437
388
438
# ---------------------------------------------------------------
389
439
0 commit comments