ricgraph 3.1__tar.gz → 3.2__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.1/ricgraph.egg-info → ricgraph-3.2}/PKG-INFO +1 -1
- {ricgraph-3.1 → ricgraph-3.2}/README.md +30 -1
- {ricgraph-3.1 → ricgraph-3.2}/pyproject.toml +1 -1
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph.py +30 -26
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_cache.py +9 -18
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_constants.py +108 -88
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_cypher.py +104 -147
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_file.py +65 -35
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_graphdb.py +68 -30
- ricgraph-3.2/ricgraph/ricgraph_harvest.py +536 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_researchinfo.py +36 -12
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_utils.py +345 -9
- {ricgraph-3.1 → ricgraph-3.2/ricgraph.egg-info}/PKG-INFO +1 -1
- ricgraph-3.1/ricgraph/ricgraph_harvest.py +0 -176
- {ricgraph-3.1 → ricgraph-3.2}/LICENSE +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/README-PyPI.md +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/__init__.py +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph/ricgraph_restapi.py +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph.egg-info/SOURCES.txt +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph.egg-info/dependency_links.txt +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph.egg-info/requires.txt +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/ricgraph.egg-info/top_level.txt +0 -0
- {ricgraph-3.1 → ricgraph-3.2}/setup.cfg +0 -0
|
@@ -57,6 +57,33 @@ adapted to new application areas.
|
|
|
57
57
|
Throughout this documentation, we illustrate how Ricgraph works by applying
|
|
58
58
|
it to the application area research information.
|
|
59
59
|
|
|
60
|
+
## Ricgraph introduction videos
|
|
61
|
+
|
|
62
|
+
You may want to watch the following videos about Ricgraph. The left one is a
|
|
63
|
+
short video, only including the Ricgraph use cases. The right one is a more
|
|
64
|
+
extensive one (also including the use cases).
|
|
65
|
+
|
|
66
|
+
<table>
|
|
67
|
+
<tr>
|
|
68
|
+
<td style="width:50%;"><b>Ricgraph use cases video (1m30s)</b></td>
|
|
69
|
+
<td style="width:50%;"><b>Ricgraph introduction video including use cases (2m28s)</b></td>
|
|
70
|
+
</tr>
|
|
71
|
+
<tr>
|
|
72
|
+
<td><video src="docs/videos/ricgraph_usecases.mp4" controls width="90%">Ricgraph use cases video (1m30s)</video></td>
|
|
73
|
+
<td><video src="docs/videos/ricgraph_intro_usecases.mp4" controls width="90%">Ricgraph introduction video including use cases (2m28s)</video></td>
|
|
74
|
+
</tr>
|
|
75
|
+
<tr>
|
|
76
|
+
<td>
|
|
77
|
+
<a href="https://docs.ricgraph.eu/docs/videos/ricgraph_usecases.mp4" target="_blank">
|
|
78
|
+
Click to play or download the Ricgraph use cases video</a>.
|
|
79
|
+
</td>
|
|
80
|
+
<td>
|
|
81
|
+
<a href="https://docs.ricgraph.eu/docs/videos/ricgraph_intro_usecases.mp4" target="_blank">
|
|
82
|
+
Click to play or download the Ricgraph introduction video</a>.
|
|
83
|
+
</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</table>
|
|
86
|
+
|
|
60
87
|
## Ricgraph news
|
|
61
88
|
|
|
62
89
|
Read my recent preprint:
|
|
@@ -321,6 +348,8 @@ The following figure shows how three persons have contributed to one research ou
|
|
|
321
348
|
|
|
322
349
|
* Explore the full documentation of Ricgraph on
|
|
323
350
|
[https://docs.ricgraph.eu](https://docs.ricgraph.eu).
|
|
351
|
+
* Play the [Ricgraph use cases video](docs/videos/ricgraph_usecases.mp4), or the
|
|
352
|
+
[Ricgraph introduction video](docs/videos/ricgraph_intro_usecases.mp4).
|
|
324
353
|
* For a gentle introduction in Ricgraph, read the reference publication:
|
|
325
354
|
Rik D.T. Janssen (2024). *Ricgraph: A flexible and extensible graph to explore research in
|
|
326
355
|
context from various systems*. SoftwareX, 26(101736).
|
|
@@ -420,4 +449,4 @@ please let me know by creating a GitHub *Issue* at the top left of that page.
|
|
|
420
449
|
<!-- Do not change the lines below. The version number will be
|
|
421
450
|
modified by script maintenance/update_version.bash -->
|
|
422
451
|
This README.md file is part of the
|
|
423
|
-
documentation for version 3.
|
|
452
|
+
documentation for version 3.2 of Ricgraph - Research in context graph.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
#
|
|
7
7
|
# MIT License
|
|
8
8
|
#
|
|
9
|
-
# Copyright (c) 2023
|
|
9
|
+
# Copyright (c) 2023 - 2026 Rik D.T. Janssen
|
|
10
10
|
#
|
|
11
11
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
12
|
# of this software and associated documentation files (the "Software"), to deal
|
|
@@ -101,14 +101,18 @@ In the default configuration of Ricgraph, the following properties are included:
|
|
|
101
101
|
from numpy import nan
|
|
102
102
|
from pandas import DataFrame, concat, set_option
|
|
103
103
|
from typing import Union
|
|
104
|
-
|
|
104
|
+
|
|
105
|
+
from .ricgraph_utils import (timestamp, timestamp_posix,
|
|
106
|
+
print_records_per_minute,
|
|
107
|
+
print_progress)
|
|
105
108
|
from .ricgraph_graphdb import (create_update_node, create_two_nodes_and_edge,
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
get_ricgraph_nodeadd_mode,
|
|
110
|
+
get_ricgraph_properties_standard,
|
|
111
|
+
get_ricgraph_properties_additional)
|
|
108
112
|
|
|
109
113
|
|
|
110
114
|
__author__ = 'Rik D.T. Janssen'
|
|
111
|
-
__copyright__ = 'Copyright (c) 2023
|
|
115
|
+
__copyright__ = 'Copyright (c) 2023 - 2026 Rik D.T. Janssen'
|
|
112
116
|
__email__ = ''
|
|
113
117
|
__license__ = 'MIT License'
|
|
114
118
|
__package__ = 'Ricgraph'
|
|
@@ -116,7 +120,7 @@ __package__ = 'Ricgraph'
|
|
|
116
120
|
# __version__ should be placed here instead of in __init__.py.
|
|
117
121
|
# If not here, it cannot be found when executing something like
|
|
118
122
|
# PYTHONPATH=../ricgraph ../bin/python ricgraph_explorer.py
|
|
119
|
-
__version__ = '3.
|
|
123
|
+
__version__ = '3.2'
|
|
120
124
|
|
|
121
125
|
|
|
122
126
|
# ##############################################################################
|
|
@@ -148,18 +152,14 @@ def update_nodes_df(nodes: DataFrame) -> None:
|
|
|
148
152
|
nodes_clean.drop_duplicates(keep='first', inplace=True, ignore_index=True)
|
|
149
153
|
|
|
150
154
|
print('There are ' + str(len(nodes_clean)) + ' nodes ('
|
|
151
|
-
+ timestamp() + '), updating node:
|
|
155
|
+
+ timestamp() + '), updating node:')
|
|
152
156
|
count = 0
|
|
157
|
+
start_ts = timestamp_posix()
|
|
153
158
|
columns = nodes_clean.columns
|
|
154
159
|
for row in nodes_clean.itertuples():
|
|
155
|
-
count
|
|
156
|
-
if count % 250 == 0:
|
|
157
|
-
print(count, ' ', end='', flush=True)
|
|
158
|
-
if count % 2500 == 0:
|
|
159
|
-
print('(' + timestamp() + ')\n', end='', flush=True)
|
|
160
|
-
|
|
160
|
+
count = print_progress(count=count, interval=250)
|
|
161
161
|
node_properties = {}
|
|
162
|
-
for prop_name in
|
|
162
|
+
for prop_name in get_ricgraph_properties_additional():
|
|
163
163
|
for other_name in columns:
|
|
164
164
|
if prop_name == other_name:
|
|
165
165
|
node_properties[prop_name] = getattr(row, other_name)
|
|
@@ -167,7 +167,11 @@ def update_nodes_df(nodes: DataFrame) -> None:
|
|
|
167
167
|
create_update_node(name=row.name, category=row.category, value=row.value,
|
|
168
168
|
other_properties=node_properties)
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
print_progress(count=count, now=True)
|
|
171
|
+
end_ts = timestamp_posix()
|
|
172
|
+
print_records_per_minute(start_ts=start_ts, end_ts=end_ts,
|
|
173
|
+
nr_records=count,
|
|
174
|
+
what='Updated')
|
|
171
175
|
return
|
|
172
176
|
|
|
173
177
|
|
|
@@ -184,18 +188,14 @@ def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
|
184
188
|
:return: None.
|
|
185
189
|
"""
|
|
186
190
|
print('There are ' + str(len(left_and_right_nodepairs)) + ' rows ('
|
|
187
|
-
+ timestamp() + '), creating nodes and edges for row:
|
|
191
|
+
+ timestamp() + '), creating nodes and edges for row:')
|
|
188
192
|
count = 0
|
|
193
|
+
start_ts = timestamp_posix()
|
|
189
194
|
columns = left_and_right_nodepairs.columns
|
|
190
195
|
for row in left_and_right_nodepairs.itertuples():
|
|
191
|
-
count
|
|
192
|
-
if count % 250 == 0:
|
|
193
|
-
print(count, ' ', end='', flush=True)
|
|
194
|
-
if count % 2500 == 0:
|
|
195
|
-
print('(' + timestamp() + ')\n', end='', flush=True)
|
|
196
|
-
|
|
196
|
+
count = print_progress(count=count, interval=250)
|
|
197
197
|
node_properties = {}
|
|
198
|
-
for prop_name in
|
|
198
|
+
for prop_name in get_ricgraph_properties_additional():
|
|
199
199
|
for other_name in columns:
|
|
200
200
|
if prop_name + '1' == other_name:
|
|
201
201
|
node_properties[prop_name + '1'] = getattr(row, other_name)
|
|
@@ -206,7 +206,11 @@ def create_nodepairs_and_edges_df(left_and_right_nodepairs: DataFrame) -> None:
|
|
|
206
206
|
create_two_nodes_and_edge(name1=row.name1, category1=row.category1, value1=row.value1,
|
|
207
207
|
name2=row.name2, category2=row.category2, value2=row.value2,
|
|
208
208
|
**node_properties)
|
|
209
|
-
|
|
209
|
+
print_progress(count=count, now=True)
|
|
210
|
+
end_ts = timestamp_posix()
|
|
211
|
+
print_records_per_minute(start_ts=start_ts, end_ts=end_ts,
|
|
212
|
+
nr_records=count,
|
|
213
|
+
what='Created')
|
|
210
214
|
return
|
|
211
215
|
|
|
212
216
|
|
|
@@ -242,7 +246,7 @@ def create_nodepairs_and_edges_params(name1: Union[dict, str], category1: Union[
|
|
|
242
246
|
left_and_right_nodepairs.rename(columns={value1.name: 'value1'}, inplace=True)
|
|
243
247
|
|
|
244
248
|
# This makes programming more efficient
|
|
245
|
-
allowed_properties =
|
|
249
|
+
allowed_properties = get_ricgraph_properties_additional() + get_ricgraph_properties_standard()
|
|
246
250
|
ext_other_properties = other_properties.copy()
|
|
247
251
|
ext_other_properties['name1'] = name1
|
|
248
252
|
ext_other_properties['name2'] = name2
|
|
@@ -310,7 +314,7 @@ def unify_personal_identifiers(personal_identifiers: DataFrame,
|
|
|
310
314
|
identifiers.dropna(axis=0, how='any', inplace=True)
|
|
311
315
|
identifiers.drop_duplicates(keep='first', inplace=True, ignore_index=True)
|
|
312
316
|
|
|
313
|
-
if
|
|
317
|
+
if get_ricgraph_nodeadd_mode() == 'strict':
|
|
314
318
|
# Remove rows which have a cell value that occurs more than once.
|
|
315
319
|
# There are two situations: (1) nodes with unique value; (2) nodes with non-unique value.
|
|
316
320
|
# (1) We assume that in one source system, always the same ID is used to connect to
|
|
@@ -46,7 +46,7 @@ from sys import getsizeof
|
|
|
46
46
|
from typing import Optional
|
|
47
47
|
from pymemcache.client.base import Client
|
|
48
48
|
from .ricgraph_constants import MAX_NODES_CACHE_KEY_ID
|
|
49
|
-
from .ricgraph_utils import (
|
|
49
|
+
from .ricgraph_utils import (get_configfile_key_memcached_parameters,
|
|
50
50
|
serialize_value, deserialize_value)
|
|
51
51
|
|
|
52
52
|
|
|
@@ -70,19 +70,21 @@ def memcached_open_connection() -> None:
|
|
|
70
70
|
If Memcached is not available, then return None.
|
|
71
71
|
Set the Memcached client in a global variable.
|
|
72
72
|
"""
|
|
73
|
-
global _MEMCACHED_HOST, _MEMCACHED_PORT
|
|
74
73
|
global _memcached_available, _memcached_client
|
|
75
74
|
|
|
76
|
-
|
|
75
|
+
memcached_to_be_used, memcached_host, memcached_port = get_configfile_key_memcached_parameters()
|
|
76
|
+
if memcached_to_be_used:
|
|
77
|
+
_memcached_available = True
|
|
78
|
+
else:
|
|
77
79
|
_memcached_available = False
|
|
78
80
|
return
|
|
79
81
|
|
|
80
|
-
if
|
|
82
|
+
if memcached_host == '':
|
|
81
83
|
_memcached_available = False
|
|
82
84
|
return
|
|
83
85
|
|
|
84
86
|
try:
|
|
85
|
-
memcached_client = Client(server=(
|
|
87
|
+
memcached_client = Client(server=(memcached_host, memcached_port),
|
|
86
88
|
allow_unicode_keys=True)
|
|
87
89
|
|
|
88
90
|
# Test connection by setting and deleting a test key.
|
|
@@ -93,6 +95,8 @@ def memcached_open_connection() -> None:
|
|
|
93
95
|
_memcached_client = memcached_client
|
|
94
96
|
return
|
|
95
97
|
except:
|
|
98
|
+
print('memcached_open_connection(): Warning: could not reach Memcached cache daemon,')
|
|
99
|
+
print(' it is probably not running, continuing with local cache.')
|
|
96
100
|
_memcached_available = False
|
|
97
101
|
_memcached_client = None
|
|
98
102
|
return
|
|
@@ -271,16 +275,3 @@ def nodes_cache_key_id_type_size() -> str:
|
|
|
271
275
|
result += 'This cache has ' + str(items) + ' elements, and its size is '
|
|
272
276
|
result += str(size_kb) + ' kB.'
|
|
273
277
|
return result
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
# ############################################
|
|
277
|
-
# ################### main ###################
|
|
278
|
-
# ############################################
|
|
279
|
-
# This will be executed on module initialization
|
|
280
|
-
_MEMCACHED_HOST = get_configfile_key(section='Memcached',
|
|
281
|
-
key='memcached_host')
|
|
282
|
-
# This returns a str, will be converted to int later on.
|
|
283
|
-
_MEMCACHED_PORT = get_configfile_key(section='Memcached',
|
|
284
|
-
key='memcached_port')
|
|
285
|
-
_MEMCACHED_TO_BE_USED = get_configfile_key(section='Memcached',
|
|
286
|
-
key='ricgraph_explorer_uses_memcached')
|
|
@@ -82,7 +82,7 @@ MAX_NODES_CACHE_KEY_ID = 2000000
|
|
|
82
82
|
MAX_NR_HISTORYITEMS_TO_ADD = 50
|
|
83
83
|
|
|
84
84
|
# The maximum length of the organization abbreviation.
|
|
85
|
-
MAX_ORG_ABBREVIATION_LENGTH =
|
|
85
|
+
MAX_ORG_ABBREVIATION_LENGTH = 4
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
# ########################################################################
|
|
@@ -95,96 +95,116 @@ MAX_ORG_ABBREVIATION_LENGTH = 3
|
|
|
95
95
|
#
|
|
96
96
|
# An example mapping may look like this:
|
|
97
97
|
# mapping = {
|
|
98
|
-
# 'book':
|
|
99
|
-
# 'data set':
|
|
100
|
-
# 'software':
|
|
98
|
+
# 'book': ROCATEGORY_BOOK,
|
|
99
|
+
# 'data set': ROCATEGORY_DATASET,
|
|
100
|
+
# 'software': ROCATEGORY_SOFTWARE
|
|
101
101
|
# }
|
|
102
102
|
#
|
|
103
|
-
# Call the function
|
|
104
|
-
# If you add a type, also add it to
|
|
105
|
-
# If you add a type that is a publication, also add it to
|
|
103
|
+
# Call the function lookup_resout_category() to do this mapping.
|
|
104
|
+
# If you add a type, also add it to ROCATEGORY_ALL.
|
|
105
|
+
# If you add a type that is a publication, also add it to ROCATEGORY_PUBLICATION.
|
|
106
|
+
#
|
|
107
|
+
# ROCATEGORY_* are used in the Ricgraph 'category' field.
|
|
106
108
|
#
|
|
107
109
|
# This list is inspired by the Strategy Evaluation Protocol 2021-2027
|
|
108
110
|
# https://www.universiteitenvannederland.nl/files/documenten/Domeinen/Onderzoek/SEP_2021-2027.pdf,
|
|
109
111
|
# Appendix E2.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
112
|
+
ROCATEGORY_ABSTRACT = 'abstract'
|
|
113
|
+
ROCATEGORY_ARTEFACT = 'artefact'
|
|
114
|
+
ROCATEGORY_BOOK = 'book'
|
|
115
|
+
ROCATEGORY_BOOKCHAPTER = 'book chapter'
|
|
116
|
+
ROCATEGORY_CONFERENCE_ARTICLE = 'conference article'
|
|
117
|
+
ROCATEGORY_DATASET = 'data set'
|
|
118
|
+
ROCATEGORY_DESIGN = 'design'
|
|
119
|
+
ROCATEGORY_DIGITAL_VISUAL_PRODUCT = 'digital or visual product'
|
|
120
|
+
ROCATEGORY_EDITORIAL = 'editorial'
|
|
121
|
+
ROCATEGORY_ENTRY = 'entry for encyclopedia or dictionary'
|
|
122
|
+
ROCATEGORY_EXHIBITION_PERFORMANCE = 'exhibition or performance'
|
|
123
|
+
ROCATEGORY_JOURNAL_ARTICLE = 'journal article'
|
|
124
|
+
ROCATEGORY_LETTER = 'letter to the editor'
|
|
125
|
+
ROCATEGORY_MEMORANDUM = 'memorandum'
|
|
126
|
+
ROCATEGORY_METHOD_DESCRIPTION = 'method description'
|
|
127
|
+
ROCATEGORY_MODEL = 'model'
|
|
128
|
+
ROCATEGORY_OTHER_CONTRIBUTION = 'other contribution'
|
|
129
|
+
ROCATEGORY_PATENT = 'patent'
|
|
130
|
+
ROCATEGORY_PHDTHESIS = 'PhD thesis'
|
|
131
|
+
ROCATEGORY_POSTER = 'poster'
|
|
132
|
+
ROCATEGORY_PREPRINT = 'preprint'
|
|
133
|
+
ROCATEGORY_PRESENTATION = 'presentation'
|
|
134
|
+
ROCATEGORY_REGISTERED_REPORT = 'registered report'
|
|
135
|
+
ROCATEGORY_REPORT = 'report'
|
|
136
|
+
ROCATEGORY_RETRACTION = 'retraction'
|
|
137
|
+
ROCATEGORY_REVIEW = 'review'
|
|
138
|
+
ROCATEGORY_SOFTWARE = 'software'
|
|
139
|
+
ROCATEGORY_THESIS = 'thesis'
|
|
140
|
+
ROCATEGORY_WEBSITE = 'website or web publication'
|
|
141
|
+
|
|
142
|
+
# ########################################################################
|
|
143
|
+
# This is a special research output type allowing to select all publication
|
|
144
|
+
# types.
|
|
145
|
+
ROCATEGORY_PUBLICATION_ALL = 'publication_all'
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
ROCATEGORY_ALL = [ROCATEGORY_ABSTRACT,
|
|
149
|
+
ROCATEGORY_ARTEFACT,
|
|
150
|
+
ROCATEGORY_BOOK,
|
|
151
|
+
ROCATEGORY_BOOKCHAPTER,
|
|
152
|
+
ROCATEGORY_CONFERENCE_ARTICLE,
|
|
153
|
+
ROCATEGORY_DATASET,
|
|
154
|
+
ROCATEGORY_DESIGN,
|
|
155
|
+
ROCATEGORY_DIGITAL_VISUAL_PRODUCT,
|
|
156
|
+
ROCATEGORY_EDITORIAL,
|
|
157
|
+
ROCATEGORY_ENTRY,
|
|
158
|
+
ROCATEGORY_EXHIBITION_PERFORMANCE,
|
|
159
|
+
ROCATEGORY_JOURNAL_ARTICLE,
|
|
160
|
+
ROCATEGORY_LETTER,
|
|
161
|
+
ROCATEGORY_MEMORANDUM,
|
|
162
|
+
ROCATEGORY_METHOD_DESCRIPTION,
|
|
163
|
+
ROCATEGORY_MODEL,
|
|
164
|
+
ROCATEGORY_OTHER_CONTRIBUTION,
|
|
165
|
+
ROCATEGORY_PATENT,
|
|
166
|
+
ROCATEGORY_PHDTHESIS,
|
|
167
|
+
ROCATEGORY_POSTER,
|
|
168
|
+
ROCATEGORY_PREPRINT,
|
|
169
|
+
ROCATEGORY_PRESENTATION,
|
|
170
|
+
ROCATEGORY_REGISTERED_REPORT,
|
|
171
|
+
ROCATEGORY_REPORT,
|
|
172
|
+
ROCATEGORY_RETRACTION,
|
|
173
|
+
ROCATEGORY_REVIEW,
|
|
174
|
+
ROCATEGORY_SOFTWARE,
|
|
175
|
+
ROCATEGORY_THESIS,
|
|
176
|
+
ROCATEGORY_WEBSITE]
|
|
177
|
+
|
|
178
|
+
# A resout_type_all is defined in initialize_ricgraph_explorer().
|
|
179
|
+
# These are elements of ROCATEGORY_ALL that are present in your Ricgraph.
|
|
180
|
+
# I.e., those have been harvested from the source systems that you chose to harvest.
|
|
181
|
+
|
|
182
|
+
ROCATEGORY_PUBLICATION = [ROCATEGORY_ABSTRACT,
|
|
183
|
+
ROCATEGORY_BOOK,
|
|
184
|
+
ROCATEGORY_BOOKCHAPTER,
|
|
185
|
+
ROCATEGORY_CONFERENCE_ARTICLE,
|
|
186
|
+
ROCATEGORY_EDITORIAL,
|
|
187
|
+
ROCATEGORY_ENTRY,
|
|
188
|
+
ROCATEGORY_JOURNAL_ARTICLE,
|
|
189
|
+
ROCATEGORY_LETTER,
|
|
190
|
+
ROCATEGORY_MEMORANDUM,
|
|
191
|
+
ROCATEGORY_METHOD_DESCRIPTION,
|
|
192
|
+
ROCATEGORY_PATENT,
|
|
193
|
+
ROCATEGORY_PHDTHESIS,
|
|
194
|
+
ROCATEGORY_POSTER,
|
|
195
|
+
ROCATEGORY_PREPRINT,
|
|
196
|
+
ROCATEGORY_PRESENTATION,
|
|
197
|
+
ROCATEGORY_REGISTERED_REPORT,
|
|
198
|
+
ROCATEGORY_REPORT,
|
|
199
|
+
ROCATEGORY_RETRACTION,
|
|
200
|
+
ROCATEGORY_REVIEW,
|
|
201
|
+
ROCATEGORY_THESIS]
|
|
202
|
+
|
|
203
|
+
# A resout_type_pub is defined in initialize_ricgraph_explorer().
|
|
204
|
+
# These are elements of ROCATEGORY_PUBLICATION that are present in your Ricgraph.
|
|
205
|
+
# I.e., those have been harvested from the source systems that you chose to harvest.
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# ########################################################################
|
|
209
|
+
# Other types used in Ricgraph.
|
|
210
|
+
CATEGORY_PRESS_MEDIA = 'press media'
|