ricgraph 3.3__tar.gz → 3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ricgraph
3
- Version: 3.3
3
+ Version: 3.5
4
4
  Summary: Ricgraph - Research in context graph
5
5
  Author: Rik D.T. Janssen
6
6
  License-Expression: MIT
@@ -20,8 +20,10 @@ License-File: LICENSE
20
20
  Requires-Dist: neo4j>=5.8
21
21
  Requires-Dist: numpy
22
22
  Requires-Dist: pandas
23
+ Requires-Dist: pymemcache
23
24
  Requires-Dist: requests
24
25
  Requires-Dist: unidecode
26
+ Requires-Dist: markupsafe
25
27
  Dynamic: license-file
26
28
 
27
29
  [![DOI Ricgraph software](https://img.shields.io/badge/software-10.5281/zenodo.7524314-blue?logo=doi&logoColor=fff)](https://doi.org/10.5281/zenodo.7524314)
@@ -50,107 +52,48 @@ Documentation about the Podman badges can be found here: https://github.com/eggp
50
52
 
51
53
  ## What is Ricgraph?
52
54
 
53
- Ricgraph, also known as Research in context graph, enables the exploration of researchers,
54
- teams, their results,
55
+ Ricgraph, also known as Research in context graph, enables the exploration of researchers, teams, their results,
55
56
  collaborations, skills, projects, and the relations between these items.
56
57
 
57
- Ricgraph can store many types of items into a single graph.
58
+ Ricgraph can store many types of items into a single graph.
58
59
  These items can be obtained from various systems and from
59
- multiple organizations. Ricgraph facilitates reasoning about these
60
+ multiple organizations. Ricgraph facilitates reasoning about these
60
61
  items because it infers new relations between items,
61
- relations that are not present in any of the separate source systems.
62
+ relations that are not present in any of the separate source systems.
62
63
  It is flexible and extensible, and can be
63
64
  adapted to new application areas.
64
65
 
65
- ## Motivation
66
-
67
- Ricgraph is software that is about
68
- relations between items. These items can be collected from various source
69
- systems and from multiple organizations. We
70
- explain how Ricgraph works by applying it to the application area
71
- *research information*. We show the insights that can be
72
- obtained by combining information from various source systems,
73
- insight arising from new relations that are not present
74
- in each separate source system.
75
-
76
- *Research information* is about anything related to research: research
77
- results, the persons in a research team, their
78
- collaborations, their skills, projects in which they have
79
- participated, as well as the relations between these entities.
80
- Examples of *research results* are publications, data sets, and software.
81
-
82
- The following sections show three use cases
83
- that use different types of information (called *items*):
84
- researchers, skills, publications,
85
- etc. Most often, these types of information are not stored in
86
- one system, so the use cases may be difficult or
87
- time-consuming to answer. However, by using Ricgraph, these
88
- use cases (and many others) are easy to answer, as will be
89
- explained throughout this documentation.
90
-
91
- Although this documentation illustrates Ricgraph in the application area
92
- research information, the principle “relations
93
- between items from various source systems” is general,
94
- so Ricgraph can be used in other application areas.
95
-
96
- ### Use case for a journalist
97
- As a journalist, I want to find researchers with a certain skill S and their publications,
98
- so that I can interview them for a newspaper article.
99
- Example skills can be: *climate change* or *stem cells*.
100
- The items surrounded by the red line are the solution to this use case.
101
-
102
- <!--
103
- The 'width=...' in the lines below to include a figure are necessary for
104
- the documentation generated with Quarto, a.o. for the documentation website.
105
- We will need a width instead of a height to prevent right margin overflows
106
- on small mobile screens.
107
- -->
108
-
109
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/journalist-use-case.jpg" alt="Ricgraph use case for a journalist." width="70%">
110
-
111
- ### Use case for a librarian
112
- As a librarian, I want to enrich my local research information system with research results
113
- from person A that are in other systems (in orange, *RIS2*) but not in
114
- ours (in green, *RIS1*), so that we have a more complete view of research at our university.
115
- The items surrounded by the red line are the solution to this use case.
116
-
117
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/librarian-use-case.jpg" alt="Ricgraph use case for a librarian." width="75%">
118
-
119
- ### Use case for a researcher
120
- As a researcher A, I want to find researchers from other universities that have
121
- co-authored publications written by the co-authors of my own publications,
122
- so that I can read their publications to find out if we share common research interests.
123
- The items surrounded by the red line are the solution to this use case.
124
-
125
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/researcher-use-case.jpg" alt="Ricgraph use case for a researcher." width="35%">
126
-
127
- ## Main contributions of Ricgraph
128
-
129
- * Ricgraph can store many types of items in a single graph.
130
- * Ricgraph harvests multiple source systems into a single graph.
131
- * Ricgraph Explorer is the exploration tool for Ricgraph.
132
- * Ricgraph facilitates reasoning about items because it infers new relations between items.
133
- * Ricgraph can be tailored for an application area.
134
-
135
- ## Read more about Ricgraph
136
-
137
- For a gentle introduction in Ricgraph, read the reference publication:
138
- Rik D.T. Janssen (2024). *Ricgraph: A flexible and extensible graph to explore research in
139
- context from various systems*. SoftwareX, 26(101736).
140
- [https://doi.org/10.1016/j.softx.2024.101736](https://doi.org/10.1016/j.softx.2024.101736).
141
-
142
- You might also want to read the documentation on
143
- [https://docs.ricgraph.eu](https://docs.ricgraph.eu).
144
- You can also go to the [Ricgraph GitHub repository](https://github.com/UtrechtUniversity/ricgraph).
145
- To use Ricgraph, installing the [Ricgraph package from PyPI](https://pypi.org/project/ricgraph)
146
- is not sufficient. Please read the
147
- installation instructions in the Ricgraph GitHub repository.
66
+ ## Why Ricgraph is unique
67
+
68
+ Ricgraph is unique because it allows you to:
69
+
70
+ * Explore collaborations between (sub-)organizations;
71
+ * Explore open science;
72
+ * Enhance research information systems.
73
+
74
+ One of the other strengths of Ricgraph is that anyone with
75
+ Python knowledge can easily extend it, allowing you to test
76
+ your own ideas or create your own applications.
77
+
78
+ You can use Ricgraph either as a standalone tool,
79
+ or as a component that provides a graph based data structure with
80
+ a number of handy tools.
81
+ Ricgraph has been developed for the application area
82
+ research information,
83
+ and it can be used for other application areas that require
84
+ relations between items from various source systems.
85
+
86
+ ## More information about Ricgraph
87
+
88
+ To learn more about Ricgraph, please go to the
89
+ [Ricgraph website www.ricgraph.eu](https://www.ricgraph.eu).
90
+
91
+ If you would like to know more details about Ricgraph, please go to the
92
+ [Ricgraph documentation website docs.ricgraph.eu](https://docs.ricgraph.eu).
148
93
 
149
94
  ## Contact
150
95
 
151
96
  Ricgraph has been created and is being maintained by
152
97
  Rik D.T. Janssen from Utrecht University in the Netherlands.
153
98
  You can find contact details at
154
- [his Utrecht University employee page](https://www.uu.nl/staff/DTJanssen).
155
- He also has an ORCID profile on
156
- [ORCID 0000-0001-9510-0802](https://orcid.org/0000-0001-9510-0802).
99
+ the [Ricgraph contact page](https://www.ricgraph.eu/contact.html).
@@ -24,107 +24,48 @@ Documentation about the Podman badges can be found here: https://github.com/eggp
24
24
 
25
25
  ## What is Ricgraph?
26
26
 
27
- Ricgraph, also known as Research in context graph, enables the exploration of researchers,
28
- teams, their results,
27
+ Ricgraph, also known as Research in context graph, enables the exploration of researchers, teams, their results,
29
28
  collaborations, skills, projects, and the relations between these items.
30
29
 
31
- Ricgraph can store many types of items into a single graph.
30
+ Ricgraph can store many types of items into a single graph.
32
31
  These items can be obtained from various systems and from
33
- multiple organizations. Ricgraph facilitates reasoning about these
32
+ multiple organizations. Ricgraph facilitates reasoning about these
34
33
  items because it infers new relations between items,
35
- relations that are not present in any of the separate source systems.
34
+ relations that are not present in any of the separate source systems.
36
35
  It is flexible and extensible, and can be
37
36
  adapted to new application areas.
38
37
 
39
- ## Motivation
40
-
41
- Ricgraph is software that is about
42
- relations between items. These items can be collected from various source
43
- systems and from multiple organizations. We
44
- explain how Ricgraph works by applying it to the application area
45
- *research information*. We show the insights that can be
46
- obtained by combining information from various source systems,
47
- insight arising from new relations that are not present
48
- in each separate source system.
49
-
50
- *Research information* is about anything related to research: research
51
- results, the persons in a research team, their
52
- collaborations, their skills, projects in which they have
53
- participated, as well as the relations between these entities.
54
- Examples of *research results* are publications, data sets, and software.
55
-
56
- The following sections show three use cases
57
- that use different types of information (called *items*):
58
- researchers, skills, publications,
59
- etc. Most often, these types of information are not stored in
60
- one system, so the use cases may be difficult or
61
- time-consuming to answer. However, by using Ricgraph, these
62
- use cases (and many others) are easy to answer, as will be
63
- explained throughout this documentation.
64
-
65
- Although this documentation illustrates Ricgraph in the application area
66
- research information, the principle “relations
67
- between items from various source systems” is general,
68
- so Ricgraph can be used in other application areas.
69
-
70
- ### Use case for a journalist
71
- As a journalist, I want to find researchers with a certain skill S and their publications,
72
- so that I can interview them for a newspaper article.
73
- Example skills can be: *climate change* or *stem cells*.
74
- The items surrounded by the red line are the solution to this use case.
75
-
76
- <!--
77
- The 'width=...' in the lines below to include a figure are necessary for
78
- the documentation generated with Quarto, a.o. for the documentation website.
79
- We will need a width instead of a height to prevent right margin overflows
80
- on small mobile screens.
81
- -->
82
-
83
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/journalist-use-case.jpg" alt="Ricgraph use case for a journalist." width="70%">
84
-
85
- ### Use case for a librarian
86
- As a librarian, I want to enrich my local research information system with research results
87
- from person A that are in other systems (in orange, *RIS2*) but not in
88
- ours (in green, *RIS1*), so that we have a more complete view of research at our university.
89
- The items surrounded by the red line are the solution to this use case.
90
-
91
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/librarian-use-case.jpg" alt="Ricgraph use case for a librarian." width="75%">
92
-
93
- ### Use case for a researcher
94
- As a researcher A, I want to find researchers from other universities that have
95
- co-authored publications written by the co-authors of my own publications,
96
- so that I can read their publications to find out if we share common research interests.
97
- The items surrounded by the red line are the solution to this use case.
98
-
99
- <img src="https://raw.githubusercontent.com/UtrechtUniversity/ricgraph/main/docs/images/researcher-use-case.jpg" alt="Ricgraph use case for a researcher." width="35%">
100
-
101
- ## Main contributions of Ricgraph
102
-
103
- * Ricgraph can store many types of items in a single graph.
104
- * Ricgraph harvests multiple source systems into a single graph.
105
- * Ricgraph Explorer is the exploration tool for Ricgraph.
106
- * Ricgraph facilitates reasoning about items because it infers new relations between items.
107
- * Ricgraph can be tailored for an application area.
108
-
109
- ## Read more about Ricgraph
110
-
111
- For a gentle introduction in Ricgraph, read the reference publication:
112
- Rik D.T. Janssen (2024). *Ricgraph: A flexible and extensible graph to explore research in
113
- context from various systems*. SoftwareX, 26(101736).
114
- [https://doi.org/10.1016/j.softx.2024.101736](https://doi.org/10.1016/j.softx.2024.101736).
115
-
116
- You might also want to read the documentation on
117
- [https://docs.ricgraph.eu](https://docs.ricgraph.eu).
118
- You can also go to the [Ricgraph GitHub repository](https://github.com/UtrechtUniversity/ricgraph).
119
- To use Ricgraph, installing the [Ricgraph package from PyPI](https://pypi.org/project/ricgraph)
120
- is not sufficient. Please read the
121
- installation instructions in the Ricgraph GitHub repository.
38
+ ## Why Ricgraph is unique
39
+
40
+ Ricgraph is unique because it allows you to:
41
+
42
+ * Explore collaborations between (sub-)organizations;
43
+ * Explore open science;
44
+ * Enhance research information systems.
45
+
46
+ One of the other strengths of Ricgraph is that anyone with
47
+ Python knowledge can easily extend it, allowing you to test
48
+ your own ideas or create your own applications.
49
+
50
+ You can use Ricgraph either as a standalone tool,
51
+ or as a component that provides a graph based data structure with
52
+ a number of handy tools.
53
+ Ricgraph has been developed for the application area
54
+ research information,
55
+ and it can be used for other application areas that require
56
+ relations between items from various source systems.
57
+
58
+ ## More information about Ricgraph
59
+
60
+ To learn more about Ricgraph, please go to the
61
+ [Ricgraph website www.ricgraph.eu](https://www.ricgraph.eu).
62
+
63
+ If you would like to know more details about Ricgraph, please go to the
64
+ [Ricgraph documentation website docs.ricgraph.eu](https://docs.ricgraph.eu).
122
65
 
123
66
  ## Contact
124
67
 
125
68
  Ricgraph has been created and is being maintained by
126
69
  Rik D.T. Janssen from Utrecht University in the Netherlands.
127
70
  You can find contact details at
128
- [his Utrecht University employee page](https://www.uu.nl/staff/DTJanssen).
129
- He also has an ORCID profile on
130
- [ORCID 0000-0001-9510-0802](https://orcid.org/0000-0001-9510-0802).
71
+ the [Ricgraph contact page](https://www.ricgraph.eu/contact.html).
ricgraph-3.5/README.md ADDED
@@ -0,0 +1,179 @@
1
+ [![DOI Ricgraph software](https://img.shields.io/badge/software-10.5281/zenodo.7524314-blue?logo=doi&logoColor=fff)](https://doi.org/10.5281/zenodo.7524314)
2
+ [![DOI Ricgraph reference publication](https://img.shields.io/badge/reference%20publication-10.1016%2Fj.softx.2024.101736-blue?logo=doi&logoColor=fff)](https://doi.org/10.1016/j.softx.2024.101736)
3
+ [![DOI Ricgraph collaborations preprint](https://img.shields.io/badge/collaborations%20preprint-10.2139%2Fssrn.5524439-blue?logo=doi&logoColor=fff)](https://doi.org/10.2139/ssrn.5524439)
4
+ [![Ricgraph website](https://img.shields.io/badge/website-www.ricgraph.eu-blue?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MC43NTIiIGhlaWdodD0iNzAuNzYxIiB2aWV3Qm94PSIwIDAgMTguNzIgMTguNzIyIj48ZyBzdHlsZT0ic3Ryb2tlOiNmZmY7c3Ryb2tlLW9wYWNpdHk6MSIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wNTIwNCAwIDAgMS4wNTIwNCAtNjguMzM1IC0xMy4wODMpIj48Y2lyY2xlIGN4PSI2OS44MDkiIGN5PSIxNC43MDciIHI9IjEuODcyIiBmaWxsPSJub25lIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDouODtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIvPjxjaXJjbGUgY3g9IjczLjMwMiIgY3k9IjIxLjA0OSIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PGNpcmNsZSBjeD0iODAuNDc3IiBjeT0iMjIuNTk2IiByPSIxLjg3MiIgZmlsbD0ibm9uZSIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48Y2lyY2xlIGN4PSI3OC41MyIgY3k9IjE2LjM2OSIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PGNpcmNsZSBjeD0iNjcuMjI3IiBjeT0iMjMuNDQ2IiByPSIxLjg3MiIgZmlsbD0ibm9uZSIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48Y2lyY2xlIGN4PSI3Ni4zNjgiIGN5PSIyNy45NiIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PHBhdGggZD0ibTc3LjUwNiAyNi40NzQgMS44MzMtMi4zOTJNNzAuNzEyIDE2LjM0N2wxLjY4NyAzLjA2M002OC45NjggMjIuNzZsMi41OTMtMS4wMjRNNzcuMTM1IDE3LjYxOCA3NC42OTcgMTkuOE03NS4xMzIgMjEuNDQ0bDMuNTE1Ljc1N003OS4wODkgMTguMTU1bC44MyAyLjY1NCIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48L2c+PC9zdmc+)](https://www.ricgraph.eu)
5
+ [![Ricgraph documentation website](https://img.shields.io/badge/doc%20website-docs.ricgraph.eu-blue?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MC43NTIiIGhlaWdodD0iNzAuNzYxIiB2aWV3Qm94PSIwIDAgMTguNzIgMTguNzIyIj48ZyBzdHlsZT0ic3Ryb2tlOiNmZmY7c3Ryb2tlLW9wYWNpdHk6MSIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wNTIwNCAwIDAgMS4wNTIwNCAtNjguMzM1IC0xMy4wODMpIj48Y2lyY2xlIGN4PSI2OS44MDkiIGN5PSIxNC43MDciIHI9IjEuODcyIiBmaWxsPSJub25lIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDouODtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIvPjxjaXJjbGUgY3g9IjczLjMwMiIgY3k9IjIxLjA0OSIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PGNpcmNsZSBjeD0iODAuNDc3IiBjeT0iMjIuNTk2IiByPSIxLjg3MiIgZmlsbD0ibm9uZSIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48Y2lyY2xlIGN4PSI3OC41MyIgY3k9IjE2LjM2OSIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PGNpcmNsZSBjeD0iNjcuMjI3IiBjeT0iMjMuNDQ2IiByPSIxLjg3MiIgZmlsbD0ibm9uZSIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48Y2lyY2xlIGN4PSI3Ni4zNjgiIGN5PSIyNy45NiIgcj0iMS44NzIiIGZpbGw9Im5vbmUiIHN0eWxlPSJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOi44O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+PHBhdGggZD0ibTc3LjUwNiAyNi40NzQgMS44MzMtMi4zOTJNNzAuNzEyIDE2LjM0N2wxLjY4NyAzLjA2M002OC45NjggMjIuNzZsMi41OTMtMS4wMjRNNzcuMTM1IDE3LjYxOCA3NC42OTcgMTkuOE03NS4xMzIgMjEuNDQ0bDMuNTE1Ljc1N003OS4wODkgMTguMTU1bC44MyAyLjY1NCIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmZjtzdHJva2Utd2lkdGg6Ljg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz48L2c+PC9zdmc+)](https://docs.ricgraph.eu)
6
+ [![GitHub Ricgraph](https://img.shields.io/badge/GitHub-UtrechtUniversity/ricgraph-blue?logo=github)](https://github.com/UtrechtUniversity/ricgraph)
7
+ ![GitHub release date](https://img.shields.io/github/release-date/UtrechtUniversity/ricgraph?color=%234c1&logo=github)
8
+ [![GitHub latest release](https://img.shields.io/github/release/UtrechtUniversity/ricgraph?color=%234c1&logo=github)](https://github.com/UtrechtUniversity/ricgraph/releases)
9
+ ![GitHub commits since latest release](https://img.shields.io/github/commits-since/UtrechtUniversity/ricgraph/latest?color=%234c1&logo=github)
10
+ ![GitHub last commit](https://img.shields.io/github/last-commit/UtrechtUniversity/ricgraph?color=%234c1&logo=github)
11
+ [![PyPI version](https://img.shields.io/pypi/v/ricgraph?label=PyPI%20version&color=%234c1&logo=pypi&logoColor=ffffff)](https://pypi.org/project/ricgraph)
12
+ [![PyPI downloads](https://img.shields.io/pypi/dm/ricgraph?label=PyPI%20downloads&color=%234c1&logo=pypi&logoColor=ffffff)](https://pypistats.org/packages/ricgraph)
13
+ [![Ricgraph container doc](https://img.shields.io/badge/Ricgraph_container_doc-click_here-%234c1)](https://github.com/UtrechtUniversity/ricgraph/blob/main/docs/ricgraph_containerized.md)
14
+ [![Podman container version](https://ghcr-badge.egpl.dev/utrechtuniversity/ricgraph/latest_tag?color=%234c1&label=container+version)](https://github.com/utrechtuniversity/ricgraph/pkgs/container/ricgraph)
15
+ [![GitHub license](https://img.shields.io/github/license/UtrechtUniversity/ricgraph?color=%234c1)](LICENSE)
16
+ [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
17
+ [![Technology Readiness Level 7/9 - Release Candidate - Technology ready enough and in initial use by end-users in intended scholarly environments](https://w3id.org/research-technology-readiness-levels/Level7ReleaseCandidate.svg)](https://github.com/CLARIAH/clariah-plus/blob/main/requirements/software-metadata-requirements.md#15--you-should-express-a-technology-readiness-level)
18
+ [![FAIR checklist badge](https://fairsoftwarechecklist.net/badge.svg)](https://fairsoftwarechecklist.net/v0.2?f=31&a=32113&i=32110&r=123)
19
+
20
+ <!---
21
+ Note, some lines above end in two spaces, to force a line break but not a paragraph break.
22
+ We use color=#4c1 (green), that color is used by the 'repo status' badge.
23
+ Documentation about the Podman badges can be found here: https://github.com/eggplants/ghcr-badge.
24
+ --->
25
+
26
+ > Quick links:
27
+ > [Use Ricgraph](https://www.ricgraph.eu/pilot-project-open-ricgraph-demo-server.html)
28
+ > & [Read news about Ricgraph](https://www.ricgraph.eu/ricgraph-news.html)
29
+ > & Go to the [Documentation website](https://docs.ricgraph.eu)
30
+ > & Consult the [Table of contents](docs/ricgraph_toc_documentation.md#table-of-contents-ricgraph-documentation),
31
+ > or the [Index](docs/ricgraph_index_documentation.md#index-ricgraph-documentation).
32
+
33
+ <img alt="Ricgraph logo" src="docs/images/ricgraph_logo.png" width="30%">
34
+
35
+ <!---
36
+ The Mark below is used in file
37
+ https://github.com/UtrechtUniversity/ricgraph-documentation/blob/main/Makefile
38
+ to remove everything up and including these lines. Do not modify the text in it.
39
+ --->
40
+
41
+ <!--- Mark to remove everything up to here --->
42
+
43
+ # Ricgraph - Research in context graph
44
+
45
+ ## What is Ricgraph?
46
+
47
+ Ricgraph, also known as Research in context graph, enables the exploration of researchers, teams, their results,
48
+ collaborations, skills, projects, and the relations between these items.
49
+
50
+ Ricgraph can store many types of items into a single graph.
51
+ These items can be obtained from various systems and from
52
+ multiple organizations. Ricgraph facilitates reasoning about these
53
+ items because it infers new relations between items,
54
+ relations that are not present in any of the separate source systems.
55
+ It is flexible and extensible, and can be
56
+ adapted to new application areas.
57
+
58
+ ## Why Ricgraph is unique
59
+
60
+ Ricgraph is unique because it allows you to:
61
+
62
+ * [Explore collaborations between (sub-)organizations](https://www.ricgraph.eu/collaborations-with-ricgraph.html).
63
+ * [Explore open science](https://www.ricgraph.eu/open-science-with-ricgraph.html).
64
+ * [Enhance research information systems](https://www.ricgraph.eu/enhancing-with-ricgraph.html).
65
+
66
+ One of the other strengths of Ricgraph is that anyone with
67
+ Python knowledge can easily extend it, allowing you to test
68
+ your own ideas or create your own applications.
69
+
70
+ You can use Ricgraph either as a standalone tool,
71
+ or as a component that provides a graph based data structure with
72
+ a number of handy tools.
73
+ Ricgraph has been developed for the application area
74
+ research information,
75
+ and it can be used for other application areas that require
76
+ relations between items from various source systems.
77
+
78
+
79
+ ## Ricgraph introduction videos
80
+
81
+ You may want to watch the following videos about Ricgraph. The left one is a
82
+ short video, only including the Ricgraph use cases. The right one is a more
83
+ extensive one (also including the use cases).
84
+
85
+ <table>
86
+ <tr>
87
+ <td style="width:50%;"><b>Ricgraph use cases video (1m30s)</b></td>
88
+ <td style="width:50%;"><b>Ricgraph introduction video including use cases (2m28s)</b></td>
89
+ </tr>
90
+ <tr>
91
+ <td><video src="docs/videos/ricgraph_usecases.mp4" controls width="90%">Ricgraph use cases video (1m30s)</video></td>
92
+ <td><video src="docs/videos/ricgraph_intro_usecases.mp4" controls width="90%">Ricgraph introduction video including use cases (2m28s)</video></td>
93
+ </tr>
94
+ <tr>
95
+ <td>
96
+ <a href="https://docs.ricgraph.eu/docs/videos/ricgraph_usecases.mp4" target="_blank">
97
+ Click to play or download the Ricgraph use cases video</a>.
98
+ </td>
99
+ <td>
100
+ <a href="https://docs.ricgraph.eu/docs/videos/ricgraph_intro_usecases.mp4" target="_blank">
101
+ Click to play or download the Ricgraph introduction video</a>.
102
+ </td>
103
+ </tr>
104
+ </table>
105
+
106
+
107
+ ## More information about Ricgraph
108
+
109
+ To learn more about Ricgraph, please go to the
110
+ [Ricgraph website www.ricgraph.eu](https://www.ricgraph.eu).
111
+
112
+ If you would like to know more details about Ricgraph, please go to the
113
+ [Ricgraph documentation website docs.ricgraph.eu](https://docs.ricgraph.eu).
114
+
115
+ [Use Ricgraph or participate](https://www.ricgraph.eu/pilot-project-open-ricgraph-demo-server.html).
116
+
117
+ ## Ricgraph in bullet points
118
+
119
+ * Read more about [Why Ricgraph is
120
+ unique](https://www.ricgraph.eu/what-is-ricgraph.html#why-ricgraph-is-unique).
121
+ * The philosophy of Ricgraph is that it stores metadata, not the objects the metadata
122
+ refer to. To access an object, a node has a link to that object in
123
+ the system it was obtained from.
124
+ * We have chosen a
125
+ graph as a data structure, since it is a logical and efficient
126
+ method to access objects
127
+ which are close to objects they have a relation to. For example,
128
+ starting with a person, its research outputs are only one
129
+ step away by following one edge, and other contributors to that research output are
130
+ again one step (edge) away.
131
+ * Ricgraph can be used to store, manipulate and read metadata of any object that
132
+ has a relation to another object,
133
+ as long as every object can be "represented" by at least a *name* and a *value*.
134
+ In Ricgraph, one node represents one object, and an edge represents the
135
+ relation between two objects.
136
+ * Ricgraph and Ricgraph Explorer are written in Python. You can use two different
137
+ [graph database backends](https://en.wikipedia.org/wiki/Graph_database):
138
+ [Neo4j](docs/ricgraph_backend_neo4j.md#ricgraph-with-neo4j-graph-database-backend) and
139
+ [Memgraph](docs/ricgraph_backend_memgraph.md#ricgraph-with-memgraph-graph-database-backend).
140
+ * The objective of Ricgraph is to get metadata from
141
+ objects from a source system in a process called "harvesting".
142
+ That means that e.g. persons and publications
143
+ can be harvested from one system, data sets from another system, and software from a third system.
144
+ Everything found will be combined into one graph.
145
+ * Ricgraph can harvest from many sources, and you can write your own
146
+ harvesting scripts. Example scripts are included to
147
+ harvest from the [OpenAlex](https://openalex.org),
148
+ the [Research Information System Pure](https://www.elsevier.com/solutions/pure),
149
+ the data repository [Yoda](https://www.uu.nl/en/research/yoda),
150
+ the [Research Software Directory](https://research-software-directory.org), and
151
+ for the [Utrecht University staff pages](https://www.uu.nl/staff/search).
152
+ * Ricgraph is an ID resolver. It can, given an identifier of a person,
153
+ easily find other identifiers of that person. When new identifiers are found when
154
+ harvesting from new systems,
155
+ they will be added automatically.
156
+
157
+ ## Contact
158
+ Ricgraph has been created and is being maintained by
159
+ Rik D.T. Janssen from Utrecht University in the Netherlands.
160
+ You can find contact details at
161
+ [his Utrecht University employee page](https://www.uu.nl/staff/DTJanssen).
162
+ He also has an ORCID profile on
163
+ [ORCID 0000-0001-9510-0802](https://orcid.org/0000-0001-9510-0802).
164
+ You can contact him for presentations, demos and workshops.
165
+
166
+ For more details, including subscribing to the Ricgraph newsletter and
167
+ opportunities for collaboration, read
168
+ the [Ricgraph contact page](https://www.ricgraph.eu/contact.html).
169
+
170
+ If you like Ricgraph, please give it a GitHub Star by clicking on the top right
171
+ *Star* button on the Ricgraph GitHub page
172
+ [https://github.com/UtrechtUniversity/ricgraph](https://github.com/UtrechtUniversity/ricgraph).
173
+ If you have any suggestions or improvements,
174
+ please let me know by creating a GitHub *Issue* at the top left of that page.
175
+
176
+ <!-- Do not change the lines below. The version number will be
177
+ modified by script maintenance/update_version.bash -->
178
+ This README.md file is part of the
179
+ documentation for version 3.5 of Ricgraph - Research in context graph.
@@ -1,3 +1,5 @@
1
+ # pyproject.toml file to build module ricgraph for PyPI.
2
+
1
3
  [build-system]
2
4
  requires = ["setuptools>=61.0"]
3
5
  build-backend = "setuptools.build_meta"
@@ -7,7 +9,7 @@ packages = ["ricgraph"]
7
9
 
8
10
  [project]
9
11
  name = "ricgraph"
10
- version = "3.3"
12
+ version = "3.5"
11
13
  authors = [
12
14
  { name="Rik D.T. Janssen" },
13
15
  ]
@@ -29,8 +31,10 @@ dependencies = [
29
31
  "neo4j>=5.8",
30
32
  "numpy",
31
33
  "pandas",
34
+ "pymemcache",
32
35
  "requests",
33
36
  "unidecode",
37
+ "markupsafe",
34
38
  ]
35
39
 
36
40
  [project.urls]
@@ -120,7 +120,7 @@ __package__ = 'Ricgraph'
120
120
  # __version__ should be placed here instead of in __init__.py.
121
121
  # If not here, it cannot be found when executing something like
122
122
  # PYTHONPATH=../ricgraph ../bin/python ricgraph_explorer.py
123
- __version__ = '3.3'
123
+ __version__ = '3.5'
124
124
 
125
125
 
126
126
  # ##############################################################################
@@ -147,9 +147,9 @@ def update_nodes_df(nodes: DataFrame) -> None:
147
147
  """
148
148
  nodes_clean = nodes.copy(deep=True)
149
149
  # Ensure that all '' values are NaN, so that those rows can be easily removed with dropna()
150
- nodes_clean.replace('', nan, inplace=True)
151
- nodes_clean.dropna(axis=0, how='any', inplace=True)
152
- nodes_clean.drop_duplicates(keep='first', inplace=True, ignore_index=True)
150
+ nodes_clean = nodes_clean.replace('', nan)
151
+ nodes_clean = nodes_clean.dropna(axis=0, how='any')
152
+ nodes_clean = nodes_clean.drop_duplicates(keep='first', ignore_index=True)
153
153
 
154
154
  print('There are ' + str(len(nodes_clean)) + ' nodes ('
155
155
  + timestamp() + '), updating node:')
@@ -248,7 +248,7 @@ def create_nodepairs_and_edges_params(name1: dict | str, category1: dict | str,
248
248
  index=[0])
249
249
  else:
250
250
  left_and_right_nodepairs = DataFrame(data=value1).copy(deep=True)
251
- left_and_right_nodepairs.rename(columns={value1.name: 'value1'}, inplace=True)
251
+ left_and_right_nodepairs = left_and_right_nodepairs.rename(columns={value1.name: 'value1'})
252
252
 
253
253
  # This makes programming more efficient
254
254
  allowed_properties = get_ricgraph_properties_additional() + get_ricgraph_properties_standard()
@@ -268,14 +268,14 @@ def create_nodepairs_and_edges_params(name1: dict | str, category1: dict | str,
268
268
  left_and_right_nodepairs[prop_name + '1'] = other_value
269
269
  else:
270
270
  left_and_right_nodepairs = concat([left_and_right_nodepairs, other_value], axis='columns')
271
- left_and_right_nodepairs.rename(columns={other_value.name: prop_name + '1'}, inplace=True)
271
+ left_and_right_nodepairs = left_and_right_nodepairs.rename(columns={other_value.name: prop_name + '1'})
272
272
 
273
273
  if prop_name + '2' == other_name:
274
274
  if isinstance(other_value, str):
275
275
  left_and_right_nodepairs[prop_name + '2'] = other_value
276
276
  else:
277
277
  left_and_right_nodepairs = concat([left_and_right_nodepairs, other_value], axis='columns')
278
- left_and_right_nodepairs.rename(columns={other_value.name: prop_name + '2'}, inplace=True)
278
+ left_and_right_nodepairs = left_and_right_nodepairs.rename(columns={other_value.name: prop_name + '2'})
279
279
 
280
280
  # Reorder a bit, starting with the last, only the name-category-value property, since they will surely exist
281
281
  left_and_right_nodepairs.insert(0, 'value2', left_and_right_nodepairs.pop('value2'))
@@ -314,10 +314,10 @@ def unify_personal_identifiers(personal_identifiers: DataFrame,
314
314
  identifiers = personal_identifiers[[column1, column2]].copy(deep=True)
315
315
 
316
316
  # Ensure that all '' values are NaN, so that those rows can be easily removed with dropna()
317
- identifiers.replace('', nan, inplace=True)
317
+ identifiers = identifiers.replace('', nan)
318
318
  # dropna(how='any'): drop row if one or more row values contain NaN
319
- identifiers.dropna(axis=0, how='any', inplace=True)
320
- identifiers.drop_duplicates(keep='first', inplace=True, ignore_index=True)
319
+ identifiers = identifiers.dropna(axis=0, how='any')
320
+ identifiers = identifiers.drop_duplicates(keep='first', ignore_index=True)
321
321
 
322
322
  if get_ricgraph_nodeadd_mode() == 'strict':
323
323
  # Remove rows which have a cell value that occurs more than once.
@@ -342,11 +342,11 @@ def unify_personal_identifiers(personal_identifiers: DataFrame,
342
342
  # For more explanation, see file docs/ricgraph_install_configure.md,
343
343
  # section RICGRAPH_NODEADD_MODE.
344
344
  if column1 != 'FULL_NAME' and column2 != 'FULL_NAME':
345
- identifiers.drop_duplicates(subset=column1, keep=False, inplace=True, ignore_index=True)
346
- identifiers.drop_duplicates(subset=column2, keep=False, inplace=True, ignore_index=True)
345
+ identifiers = identifiers.drop_duplicates(subset=column1, keep=False, ignore_index=True)
346
+ identifiers = identifiers.drop_duplicates(subset=column2, keep=False, ignore_index=True)
347
347
 
348
- identifiers.rename(columns={column1: 'value1',
349
- column2: 'value2'}, inplace=True)
348
+ identifiers = identifiers.rename(columns={column1: 'value1',
349
+ column2: 'value2'})
350
350
  new_identifiers_columns = {'name1': column1,
351
351
  'category1': PERSON_CATEGORY_PERSON,
352
352
  'name2': column2,