ricgraph 3.2__tar.gz → 3.4__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.
- {ricgraph-3.2/ricgraph.egg-info → ricgraph-3.4}/PKG-INFO +35 -92
- {ricgraph-3.2 → ricgraph-3.4}/README-PyPI.md +32 -91
- ricgraph-3.4/README.md +180 -0
- {ricgraph-3.2 → ricgraph-3.4}/pyproject.toml +5 -1
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph.py +18 -13
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_cache.py +36 -14
- ricgraph-3.4/ricgraph/ricgraph_constants.py +513 -0
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_cypher.py +408 -188
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_file.py +15 -4
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_graphdb.py +96 -81
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_harvest.py +214 -136
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_researchinfo.py +20 -22
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_restapi.py +1 -1
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/ricgraph_utils.py +132 -60
- {ricgraph-3.2 → ricgraph-3.4/ricgraph.egg-info}/PKG-INFO +35 -92
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph.egg-info/requires.txt +2 -0
- ricgraph-3.2/README.md +0 -452
- ricgraph-3.2/ricgraph/ricgraph_constants.py +0 -210
- {ricgraph-3.2 → ricgraph-3.4}/LICENSE +0 -0
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph/__init__.py +0 -0
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph.egg-info/SOURCES.txt +0 -0
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph.egg-info/dependency_links.txt +0 -0
- {ricgraph-3.2 → ricgraph-3.4}/ricgraph.egg-info/top_level.txt +0 -0
- {ricgraph-3.2 → ricgraph-3.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ricgraph
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4
|
|
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
|
[](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
|
-
##
|
|
66
|
-
|
|
67
|
-
Ricgraph is
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
*research information
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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 with Ricgraph;
|
|
71
|
+
* Explore Open science with Ricgraph;
|
|
72
|
+
* Enhance research information systems with Ricgraph;
|
|
73
|
+
|
|
74
|
+
The nice thing
|
|
75
|
+
about Ricgraph is that anyone with Python knowledge can easily extend it,
|
|
76
|
+
so you can use Ricgraph to test your own ideas or to 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
|
-
[
|
|
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
|
-
##
|
|
40
|
-
|
|
41
|
-
Ricgraph is
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*research information
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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 with Ricgraph;
|
|
43
|
+
* Explore Open science with Ricgraph;
|
|
44
|
+
* Enhance research information systems with Ricgraph;
|
|
45
|
+
|
|
46
|
+
The nice thing
|
|
47
|
+
about Ricgraph is that anyone with Python knowledge can easily extend it,
|
|
48
|
+
so you can use Ricgraph to test your own ideas or to 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
|
-
[
|
|
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.4/README.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
[](https://doi.org/10.5281/zenodo.7524314)
|
|
2
|
+
[](https://doi.org/10.1016/j.softx.2024.101736)
|
|
3
|
+
[](https://doi.org/10.2139/ssrn.5524439)
|
|
4
|
+
[](https://www.ricgraph.eu)
|
|
5
|
+
[](https://docs.ricgraph.eu)
|
|
6
|
+
[](https://github.com/UtrechtUniversity/ricgraph)
|
|
7
|
+

|
|
8
|
+
[](https://github.com/UtrechtUniversity/ricgraph/releases)
|
|
9
|
+

|
|
10
|
+

|
|
11
|
+
[](https://pypi.org/project/ricgraph)
|
|
12
|
+
[](https://pypistats.org/packages/ricgraph)
|
|
13
|
+
[](https://github.com/UtrechtUniversity/ricgraph/blob/main/docs/ricgraph_containerized.md)
|
|
14
|
+
[](https://github.com/utrechtuniversity/ricgraph/pkgs/container/ricgraph)
|
|
15
|
+
[](LICENSE)
|
|
16
|
+
[](https://www.repostatus.org/#active)
|
|
17
|
+
[](https://github.com/CLARIAH/clariah-plus/blob/main/requirements/software-metadata-requirements.md#15--you-should-express-a-technology-readiness-level)
|
|
18
|
+
[](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 with
|
|
63
|
+
Ricgraph](https://www.ricgraph.eu/collaborations-with-ricgraph.html).
|
|
64
|
+
* [Explore Open science with Ricgraph](https://www.ricgraph.eu/open-science-with-ricgraph.html).
|
|
65
|
+
* [Enhance research information systems with Ricgraph](https://www.ricgraph.eu/enhancing-with-ricgraph.html).
|
|
66
|
+
|
|
67
|
+
The nice thing
|
|
68
|
+
about Ricgraph is that anyone with Python knowledge can easily extend it,
|
|
69
|
+
so you can use Ricgraph to test your own ideas or to create your own applications.
|
|
70
|
+
|
|
71
|
+
You can use Ricgraph either as a standalone tool,
|
|
72
|
+
or as a component that provides a graph based data structure with
|
|
73
|
+
a number of handy tools.
|
|
74
|
+
Ricgraph has been developed for the application area
|
|
75
|
+
research information,
|
|
76
|
+
and it can be used for other application areas that require
|
|
77
|
+
relations between items from various source systems.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Ricgraph introduction videos
|
|
81
|
+
|
|
82
|
+
You may want to watch the following videos about Ricgraph. The left one is a
|
|
83
|
+
short video, only including the Ricgraph use cases. The right one is a more
|
|
84
|
+
extensive one (also including the use cases).
|
|
85
|
+
|
|
86
|
+
<table>
|
|
87
|
+
<tr>
|
|
88
|
+
<td style="width:50%;"><b>Ricgraph use cases video (1m30s)</b></td>
|
|
89
|
+
<td style="width:50%;"><b>Ricgraph introduction video including use cases (2m28s)</b></td>
|
|
90
|
+
</tr>
|
|
91
|
+
<tr>
|
|
92
|
+
<td><video src="docs/videos/ricgraph_usecases.mp4" controls width="90%">Ricgraph use cases video (1m30s)</video></td>
|
|
93
|
+
<td><video src="docs/videos/ricgraph_intro_usecases.mp4" controls width="90%">Ricgraph introduction video including use cases (2m28s)</video></td>
|
|
94
|
+
</tr>
|
|
95
|
+
<tr>
|
|
96
|
+
<td>
|
|
97
|
+
<a href="https://docs.ricgraph.eu/docs/videos/ricgraph_usecases.mp4" target="_blank">
|
|
98
|
+
Click to play or download the Ricgraph use cases video</a>.
|
|
99
|
+
</td>
|
|
100
|
+
<td>
|
|
101
|
+
<a href="https://docs.ricgraph.eu/docs/videos/ricgraph_intro_usecases.mp4" target="_blank">
|
|
102
|
+
Click to play or download the Ricgraph introduction video</a>.
|
|
103
|
+
</td>
|
|
104
|
+
</tr>
|
|
105
|
+
</table>
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## More information about Ricgraph
|
|
109
|
+
|
|
110
|
+
To learn more about Ricgraph, please go to the
|
|
111
|
+
[Ricgraph website www.ricgraph.eu](https://www.ricgraph.eu).
|
|
112
|
+
|
|
113
|
+
If you would like to know more details about Ricgraph, please go to the
|
|
114
|
+
[Ricgraph documentation website docs.ricgraph.eu](https://docs.ricgraph.eu).
|
|
115
|
+
|
|
116
|
+
[Use Ricgraph or participate](https://www.ricgraph.eu/pilot-project-open-ricgraph-demo-server.html).
|
|
117
|
+
|
|
118
|
+
## Ricgraph in bullet points
|
|
119
|
+
|
|
120
|
+
* Read more about [Why Ricgraph is
|
|
121
|
+
unique](https://www.ricgraph.eu/what-is-ricgraph.html#why-ricgraph-is-unique).
|
|
122
|
+
* The philosophy of Ricgraph is that it stores metadata, not the objects the metadata
|
|
123
|
+
refer to. To access an object, a node has a link to that object in
|
|
124
|
+
the system it was obtained from.
|
|
125
|
+
* We have chosen a
|
|
126
|
+
graph as a data structure, since it is a logical and efficient
|
|
127
|
+
method to access objects
|
|
128
|
+
which are close to objects they have a relation to. For example,
|
|
129
|
+
starting with a person, its research outputs are only one
|
|
130
|
+
step away by following one edge, and other contributors to that research output are
|
|
131
|
+
again one step (edge) away.
|
|
132
|
+
* Ricgraph can be used to store, manipulate and read metadata of any object that
|
|
133
|
+
has a relation to another object,
|
|
134
|
+
as long as every object can be "represented" by at least a *name* and a *value*.
|
|
135
|
+
In Ricgraph, one node represents one object, and an edge represents the
|
|
136
|
+
relation between two objects.
|
|
137
|
+
* Ricgraph and Ricgraph Explorer are written in Python. You can use two different
|
|
138
|
+
[graph database backends](https://en.wikipedia.org/wiki/Graph_database):
|
|
139
|
+
[Neo4j](docs/ricgraph_backend_neo4j.md#ricgraph-with-neo4j-graph-database-backend) and
|
|
140
|
+
[Memgraph](docs/ricgraph_backend_memgraph.md#ricgraph-with-memgraph-graph-database-backend).
|
|
141
|
+
* The objective of Ricgraph is to get metadata from
|
|
142
|
+
objects from a source system in a process called "harvesting".
|
|
143
|
+
That means that e.g. persons and publications
|
|
144
|
+
can be harvested from one system, data sets from another system, and software from a third system.
|
|
145
|
+
Everything found will be combined into one graph.
|
|
146
|
+
* Ricgraph can harvest from many sources, and you can write your own
|
|
147
|
+
harvesting scripts. Example scripts are included to
|
|
148
|
+
harvest from the [OpenAlex](https://openalex.org),
|
|
149
|
+
the [Research Information System Pure](https://www.elsevier.com/solutions/pure),
|
|
150
|
+
the data repository [Yoda](https://www.uu.nl/en/research/yoda),
|
|
151
|
+
the [Research Software Directory](https://research-software-directory.org), and
|
|
152
|
+
for the [Utrecht University staff pages](https://www.uu.nl/staff/search).
|
|
153
|
+
* Ricgraph is an ID resolver. It can, given an identifier of a person,
|
|
154
|
+
easily find other identifiers of that person. When new identifiers are found when
|
|
155
|
+
harvesting from new systems,
|
|
156
|
+
they will be added automatically.
|
|
157
|
+
|
|
158
|
+
## Contact
|
|
159
|
+
Ricgraph has been created and is being maintained by
|
|
160
|
+
Rik D.T. Janssen from Utrecht University in the Netherlands.
|
|
161
|
+
You can find contact details at
|
|
162
|
+
[his Utrecht University employee page](https://www.uu.nl/staff/DTJanssen).
|
|
163
|
+
He also has an ORCID profile on
|
|
164
|
+
[ORCID 0000-0001-9510-0802](https://orcid.org/0000-0001-9510-0802).
|
|
165
|
+
You can contact him for presentations, demos and workshops.
|
|
166
|
+
|
|
167
|
+
For more details, including subscribing to the Ricgraph newsletter and
|
|
168
|
+
opportunities for collaboration, read
|
|
169
|
+
the [Ricgraph contact page](https://www.ricgraph.eu/contact.html).
|
|
170
|
+
|
|
171
|
+
If you like Ricgraph, please give it a GitHub Star by clicking on the top right
|
|
172
|
+
*Star* button on the Ricgraph GitHub page
|
|
173
|
+
[https://github.com/UtrechtUniversity/ricgraph](https://github.com/UtrechtUniversity/ricgraph).
|
|
174
|
+
If you have any suggestions or improvements,
|
|
175
|
+
please let me know by creating a GitHub *Issue* at the top left of that page.
|
|
176
|
+
|
|
177
|
+
<!-- Do not change the lines below. The version number will be
|
|
178
|
+
modified by script maintenance/update_version.bash -->
|
|
179
|
+
This README.md file is part of the
|
|
180
|
+
documentation for version 3.4 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.
|
|
12
|
+
version = "3.4"
|
|
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]
|
|
@@ -90,7 +90,7 @@ In the default configuration of Ricgraph, the following properties are included:
|
|
|
90
90
|
|
|
91
91
|
- url_other: other URL for a node, pointing to e.g. the originating record in a source system.
|
|
92
92
|
|
|
93
|
-
- year: year of a research
|
|
93
|
+
- year: year of a research result.
|
|
94
94
|
|
|
95
95
|
- source_event: an event to be added to the _source list.
|
|
96
96
|
|
|
@@ -100,8 +100,8 @@ In the default configuration of Ricgraph, the following properties are included:
|
|
|
100
100
|
|
|
101
101
|
from numpy import nan
|
|
102
102
|
from pandas import DataFrame, concat, set_option
|
|
103
|
-
from typing import Union
|
|
104
103
|
|
|
104
|
+
from .ricgraph_constants import PERSON_CATEGORY_PERSON
|
|
105
105
|
from .ricgraph_utils import (timestamp, timestamp_posix,
|
|
106
106
|
print_records_per_minute,
|
|
107
107
|
print_progress)
|
|
@@ -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.
|
|
123
|
+
__version__ = '3.4'
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
# ##############################################################################
|
|
@@ -164,7 +164,8 @@ def update_nodes_df(nodes: DataFrame) -> None:
|
|
|
164
164
|
if prop_name == other_name:
|
|
165
165
|
node_properties[prop_name] = getattr(row, other_name)
|
|
166
166
|
|
|
167
|
-
create_update_node(name=row.name, category=row.category,
|
|
167
|
+
create_update_node(name=str(row.name), category=str(row.category),
|
|
168
|
+
value=str(row.value),
|
|
168
169
|
other_properties=node_properties)
|
|
169
170
|
|
|
170
171
|
print_progress(count=count, now=True)
|
|
@@ -175,7 +176,7 @@ def update_nodes_df(nodes: DataFrame) -> None:
|
|
|
175
176
|
return
|
|
176
177
|
|
|
177
178
|
|
|
178
|
-
def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
179
|
+
def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame | None) -> None:
|
|
179
180
|
"""Create two nodes (called 'node pairs') and two directed edges between those nodes.
|
|
180
181
|
This is done for all the nodes passed. The nodes are specified in a DataFrame.
|
|
181
182
|
One row in the DataFrame contains two nodes which are to be connected.
|
|
@@ -187,6 +188,8 @@ def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
|
187
188
|
:param left_and_right_nodepairs: the node pairs in a DataFrame.
|
|
188
189
|
:return: None.
|
|
189
190
|
"""
|
|
191
|
+
if left_and_right_nodepairs is None or left_and_right_nodepairs.empty:
|
|
192
|
+
return
|
|
190
193
|
print('There are ' + str(len(left_and_right_nodepairs)) + ' rows ('
|
|
191
194
|
+ timestamp() + '), creating nodes and edges for row:')
|
|
192
195
|
count = 0
|
|
@@ -203,8 +206,10 @@ def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
|
203
206
|
if prop_name + '2' == other_name:
|
|
204
207
|
node_properties[prop_name + '2'] = getattr(row, other_name)
|
|
205
208
|
|
|
206
|
-
create_two_nodes_and_edge(name1=row.name1, category1=row.category1,
|
|
207
|
-
|
|
209
|
+
create_two_nodes_and_edge(name1=str(row.name1), category1=str(row.category1),
|
|
210
|
+
value1=str(row.value1),
|
|
211
|
+
name2=str(row.name2), category2=str(row.category2),
|
|
212
|
+
value2=str(row.value2),
|
|
208
213
|
**node_properties)
|
|
209
214
|
print_progress(count=count, now=True)
|
|
210
215
|
end_ts = timestamp_posix()
|
|
@@ -214,9 +219,9 @@ def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
|
214
219
|
return
|
|
215
220
|
|
|
216
221
|
|
|
217
|
-
def create_nodepairs_and_edges_params(name1:
|
|
218
|
-
name2:
|
|
219
|
-
**other_properties:
|
|
222
|
+
def create_nodepairs_and_edges_params(name1: dict | str, category1: dict | str, value1: dict | str,
|
|
223
|
+
name2: dict | str, category2: dict | str, value2: dict | str,
|
|
224
|
+
**other_properties: dict | str) -> None:
|
|
220
225
|
"""Create two nodes (called 'node pairs') and two directed edges between those nodes.
|
|
221
226
|
This is done for all the nodes passed. The nodes are specified by values passed to this function.
|
|
222
227
|
Each value can be either a string or a dict containing strings.
|
|
@@ -285,7 +290,7 @@ def create_nodepairs_and_edges_params(name1: Union[dict, str], category1: Union[
|
|
|
285
290
|
|
|
286
291
|
|
|
287
292
|
def unify_personal_identifiers(personal_identifiers: DataFrame,
|
|
288
|
-
source_event:
|
|
293
|
+
source_event: dict | str, history_event: dict | str) -> None:
|
|
289
294
|
"""Unify a collection of personal identifiers (e.g. ORCID, ISNI, etc.).
|
|
290
295
|
That means that every column is unified to every other column.
|
|
291
296
|
The identifiers are specified as columns in a DataFrame.
|
|
@@ -343,9 +348,9 @@ def unify_personal_identifiers(personal_identifiers: DataFrame,
|
|
|
343
348
|
identifiers.rename(columns={column1: 'value1',
|
|
344
349
|
column2: 'value2'}, inplace=True)
|
|
345
350
|
new_identifiers_columns = {'name1': column1,
|
|
346
|
-
'category1':
|
|
351
|
+
'category1': PERSON_CATEGORY_PERSON,
|
|
347
352
|
'name2': column2,
|
|
348
|
-
'category2':
|
|
353
|
+
'category2': PERSON_CATEGORY_PERSON,
|
|
349
354
|
'source_event1': source_event,
|
|
350
355
|
'history_event1': history_event,
|
|
351
356
|
'source_event2': source_event,
|