Project

General

Profile

« Previous | Next » 

Revision 60866

[Graph | Trunk]: Create Team and References pages. Change about architecture images

View differences:

modules/uoa-graph-portal/trunk/src/app/app.component.ts
64 64
      {
65 65
        rootItem: new MenuItem("resources", "Resources", "", "/resources", false, [], null, {}),
66 66
        items: [
67
          // new MenuItem("api", "API", "", "/resources", false, [], null, {}),
68
          // new MenuItem("schema", "Metadata Schema", "", "/resources", false, [], null, {}, null, "schema"),
69
          // new MenuItem("sources", "Sources", "", "/resources", false, [], null, {}, null, "sources"),
67
          new MenuItem("api", "API", "", "/resources", false, [], null, {}),
68
          new MenuItem("references", "References", "", "/resources/references", false, [], null, {})
70 69
        ]
71 70
      },
72 71
      {
73 72
        rootItem: new MenuItem("contact", "Support", "", "/support", false, [], null, {}),
74
        items: [
75
          // new MenuItem("contact", "Contact", "", "/support", false, [], null, {}),
76
          // new MenuItem("documentation", "Documentation", "", "/support", false, [], null, {}, null, "documentation"),
77
          // new MenuItem("faq", "FAQs", "", "/support", false, [], null, {}, null, "faq"),
78
        ]
73
        items: []
79 74
      }
80 75
    ];
81 76
    if(!isHome) {
modules/uoa-graph-portal/trunk/src/app/home/home.component.css
51 51
    animation-duration: 1.5s;
52 52
}
53 53

  
54
.numbers-background {
55
    background: transparent url('assets/graph-assets/home/5.svg') repeat-x center bottom;
56
}
57

  
58 54
.fade-out {
59 55
    visibility: hidden;
60 56
    opacity: 0;
modules/uoa-graph-portal/trunk/src/app/home/home.module.ts
25 25
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
26 26
import {arrow_right, book, cog, database, earth} from "../openaireLibrary/utils/icons/icons";
27 27
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
28
import {NumbersModule} from '../openaireLibrary/sharedComponents/numbers/numbers.module';
28 29

  
29 30
@NgModule({
30 31
  imports: [
......
32 33
    RouterModule.forChild([{
33 34
      path: '', component: HomeComponent,
34 35
    }]),
35
    RefineFieldResultsServiceModule,
36
    DataProvidersServiceModule, SearchResearchResultsServiceModule,
37 36
    ProjectsServiceModule, OrganizationsServiceModule,
38 37
    SearchFormModule,
39 38
    PiwikServiceModule,
40 39
    HelperModule,
41 40
    ErrorMessagesModule,
42
    SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule
41
    SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule
43 42
  ],
44 43
  declarations: [
45 44
    HomeComponent
......
53 52
})
54 53
export class HomeModule {
55 54
  constructor(private iconsService: IconsService) {
56
    this.iconsService.registerIcons([arrow_right, book, database, cog, earth])
55
    this.iconsService.registerIcons([arrow_right])
57 56
  }
58 57
}
modules/uoa-graph-portal/trunk/src/app/home/home.component.html
116 116
  </div>
117 117
</div>
118 118
<div>
119
  Explore
120
</div>
121
<div id="cases">
122
  <div class="uk-section uk-container uk-container-large">
123
    <div class="uk-padding-small">
124
      <div class="uk-text-center">
125
        <h2 class="uk-margin-remove-bottom">Use Cases</h2>
126
        <h6 class="uk-margin-small-top">Brief presentations of our success stories</h6>
127
      </div>
128
      <div class="uk-grid uk-child-width-1-3@m uk-child-width-1-1" uk-grid>
129
        <div class="">
130

  
131
        </div>
132
      </div>
133
    </div>
134
  </div>
135
</div>
136
<div>
119 137
  <div class="services">
120 138
    <div class="uk-section uk-container uk-container-large">
121 139
      <div class="uk-padding-small">
......
285 303
      <h2 class="uk-text-center">
286 304
        We believe in <span class="uk-text-bold">Numbers</span>
287 305
      </h2>
288
      <div class="uk-margin-large-top uk-container uk-margin-bottom uk-text-center">
289
        <div class="uk-grid uk-child-width-1-3@m">
290
          <div *ngIf="fundersSize">
291
            <h3>
292
              <a href="https://explore.openaire.eu/search/find/projects" target="_blank" class="uk-text-bold number">
293
                {{fundersSize.number|number}}<span class="number-size">{{fundersSize.size}}</span>
294
              </a>
295
            </h3>
296
            <span class="uk-text-uppercase uk-text-large">Funders</span>
297
          </div>
298
          <div *ngIf="datasourcesSize">
299
            <h3>
300
              <a href="https://explore.openaire.eu/search/find/dataproviders" target="_blank"
301
                 class="uk-text-bold number">
302
                {{datasourcesSize.number|number}}<span class="number-size">{{datasourcesSize.size}}</span>
303
              </a>
304
            </h3>
305
            <span class="uk-text-uppercase uk-text-large">Content providers</span>
306
          </div>
307
          <div *ngIf="projectsSize">
308
            <h3>
309
              <a href="https://explore.openaire.eu/search/find/projects" target="_blank" class="uk-text-bold number">
310
                {{projectsSize.number|number}}<span class="number-size">{{projectsSize.size}}</span>
311
              </a>
312
            </h3>
313
            <span class="uk-text-uppercase uk-text-large">Projects</span>
314
          </div>
315
        </div>
316
      </div>
317
      <div class="numbers-background uk-section">
318
        <div class="uk-container">
319
          <div class="uk-grid uk-margin-auto-left uk-margin-auto-right uk-grid-large" uk-grid>
320
            <div *ngIf="publicationsSize" class="uk-width-1-2@m uk-flex uk-flex-center">
321
              <div class="number-width">
322
                <a href="https://explore.openaire.eu/search/find/research-outcomes?type=publications&qf=false"
323
                   target="_blank" class="number uk-text-bold uk-margin-bottom">{{publicationsSize.count|number}} </a>
324
                <div class="uk-text-uppercase uk-flex uk-flex-middle">
325
                  <icon name="book" ratio="1.5" [flex]="true" class="uk-margin-right"
326
                        customClass="uk-text-secondary"></icon>
327
                  <span>publications</span>
328
                </div>
329
              </div>
330
            </div>
331
            <div *ngIf="datasetsSize" class="uk-width-1-2@m uk-flex uk-flex-center">
332
              <div class="number-width">
333
                <a href="https://explore.openaire.eu/search/find/research-outcomes?type=datasets&qf=false"
334
                   target="_blank" class="number uk-text-bold uk-margin-bottom">{{datasetsSize.count|number}} </a>
335
                <div class="uk-text-uppercase uk-flex uk-flex-middle">
336
                  <icon name="database" ratio="1.5" [flex]="true" class="uk-margin-right"
337
                        customClass="uk-text-secondary"></icon>
338
                  <span>research data</span>
339
                </div>
340
            </div>
341
          </div>
342
          <div *ngIf="softwareSize" class="uk-width-1-2@m uk-flex uk-flex-center">
343
            <div class="number-width">
344
              <a href="https://explore.openaire.eu/search/find/research-outcomes?type=software&qf=false"
345
                 target="_blank"  class="number uk-text-bold uk-margin-bottom">{{softwareSize.count|number}} </a>
346
              <div class="uk-text-uppercase uk-flex uk-flex-middle">
347
                <icon name="cog" ratio="1.5" [flex]="true" class="uk-margin-right"
348
                      customClass="uk-text-secondary"></icon>
349
                <span>software</span>
350
              </div>
351
            </div>
352
          </div>
353
          <div *ngIf="otherSize" class="uk-width-1-2@m uk-flex uk-flex-center">
354
            <div class="number-width">
355
              <a href="https://explore.openaire.eu/search/find/research-outcomes?type=other&qf=false"
356
                 target="_blank" class="number uk-text-bold uk-margin-bottom">{{otherSize.count|number}} </a>
357
              <div class="uk-text-uppercase uk-flex uk-flex-middle">
358
                <icon name="earth" ratio="1.5" [flex]="true" class="uk-margin-right"
359
                      customClass="uk-text-secondary"></icon>
360
                <span>other research products</span>
361
              </div>
362
            </div>
363
          </div>
364
        </div>
365
      </div>
306
      <numbers></numbers>
366 307
    </div>
367 308
  </div>
368 309
</div>
369
</div>
370 310
<div>
371 311
  <div class="uk-section uk-container">
372 312
    <div class="uk-padding-small">
modules/uoa-graph-portal/trunk/src/app/home/home.component.ts
27 27
})
28 28
export class HomeComponent {
29 29
  public pageTitle = "OpenAIRE - Research Graph";
30
  public publicationsSize: any = null;
31
  public datasetsSize: any = null;
32
  public datasetsLinkedSize: any = null;
33
  public softwareLinkedSize: any = null;
34
  public softwareSize: any = null;
35
  public otherSize: any = null;
36
  public fundersSize: any = null;
37
  public projectsSize: any = null;
38
  public datasourcesSize: any = null;
39 30
  public portals: any[] = portals;
40 31
  public state: number = 0;
41 32
  public properties: EnvProperties = properties;
......
45 36
  constructor(
46 37
    private route: ActivatedRoute,
47 38
    private _router: Router,
48
    private _searchResearchResultsService: SearchResearchResultsService,
49
    private _searchDataprovidersService: SearchDataprovidersService,
50
    private _searchProjectsService: SearchProjectsService,
51
    private _searchOrganizationsService: SearchOrganizationsService,
52
    private _refineFieldResultsService: RefineFieldResultsService,
53 39
    private location: Location, private _piwikService: PiwikService,
54 40
    private config: ConfigurationService, private _meta: Meta, private _title: Title, private seoService: SEOService
55 41
  ) {
......
70 56
      if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
71 57
        this.subs.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
72 58
      }
73
      this.getNumbers();
74 59
      this.animation();
75 60
    }
76 61
  }
......
105 90
    });
106 91
    this.state = 0;
107 92
  }
108
  
109
  private getNumbers() {
110
    this.subs.push(this._searchResearchResultsService.numOfSearchResults("publication", "", this.properties).subscribe(
111
      data => {
112
        if (data && data > 0) {
113
          this.publicationsSize = NumberUtils.roundNumber(data);
114
          
115
        }
116
      },
117
      err => {
118
        this.handleError("Error getting number of publications", err);
119
      }
120
    ));
121
    this.subs.push(this._searchResearchResultsService.numOfSearchResults("dataset", "", this.properties).subscribe(
122
      data => {
123
        if (data && data > 0) {
124
          this.datasetsSize = NumberUtils.roundNumber(data);
125
        }
126
      },
127
      err => {
128
        //console.log(err);
129
        this.handleError("Error getting number of research data", err);
130
      }
131
    ));
132
    this.subs.push(this._searchResearchResultsService.numOfSearchResultsLinkedToPub("dataset", this.properties).subscribe(
133
      data => {
134
        if (data && data > 0) {
135
          this.datasetsLinkedSize = NumberUtils.roundNumber(data);
136
        }
137
      },
138
      err => {
139
        this.handleError("Error getting number of linkedresearch data", err);
140
      }
141
    ));
142
    this.subs.push(this._searchResearchResultsService.numOfSearchResults("software", "", this.properties).subscribe(
143
      data => {
144
        if (data && data > 0) {
145
          this.softwareSize = NumberUtils.roundNumber(data);
146
        }
147
      },
148
      err => {
149
        this.handleError("Error getting number of software data", err);
150
      }
151
    ));
152
    this.subs.push(this._searchResearchResultsService.numOfSearchResultsLinkedToPub("software", this.properties).subscribe(
153
      data => {
154
        if (data && data > 0) {
155
          this.softwareLinkedSize = NumberUtils.roundNumber(data);
156
        }
157
      },
158
      err => {
159
        this.handleError("Error getting number of linked software", err);
160
      }
161
    ));
162
    this.subs.push(this._searchResearchResultsService.numOfSearchResults("other", "", this.properties).subscribe(
163
      data => {
164
        if (data && data > 0) {
165
          this.otherSize = NumberUtils.roundNumber(data);
166
        }
167
      },
168
      err => {
169
        this.handleError("Error getting number of software data", err);
170
      }
171
    ));
172
    this.subs.push(this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"], "project", this.properties).subscribe(
173
      data => {
174
        
175
        
176
        if (data[0] && data[0] > 0) {
177
          this.projectsSize = NumberUtils.roundNumber(data[0]);
178
        }
179
        if (data[1].length > 0 && data[1][0].filterId == "funder" && data[1][0].values) {
180
          this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length);
181
        }
182
        
183
      },
184
      err => {
185
        this.handleError("Error getting 'funder' field results of projects", err);
186
      })
187
    );
188
    
189
    this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders("", this.properties).subscribe(
190
      data => {
191
        if (data && data > 0) {
192
          this.datasourcesSize = NumberUtils.roundNumber(data);
193
        }
194
        
195
      },
196
      err => {
197
        this.handleError("Error getting number of content providers", err);
198
      }
199
    ));
200
  }
201
  
202
  private handleError(message: string, error) {
203
    console.error("Home Page: " + message, error);
204
  }
205 93
}
modules/uoa-graph-portal/trunk/src/app/about/faqs.ts
1
export const faqs = [
2
/*  {
3
    question: 'Test',
4
    answer: 'Test'
5
  }*/
6
];
modules/uoa-graph-portal/trunk/src/app/about/about.component.ts
55 55
      this.subs.push(this._piwikService.trackView(this.properties, this.title).subscribe());
56 56
    }
57 57
  }
58
  
59
  goTo(id: string) {
60
    const yOffset = -100;
61
    const element = document.getElementById(id);
62
    if(element) {
63
      const y = element.getBoundingClientRect().top + window.pageYOffset + yOffset;
64
      window.scrollTo({top: y, behavior: 'smooth'});
65
    }
66
  }
67 58

  
68 59
  changeTab(index: number) {
69 60
    UIkit.switcher(this.tabs.nativeElement).show(index);
modules/uoa-graph-portal/trunk/src/app/about/about.module.ts
9 9
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
10 10
import {arrow_right} from "../openaireLibrary/utils/icons/icons";
11 11
import {Schema2jsonldModule} from '../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module';
12
import {NumbersModule} from '../openaireLibrary/sharedComponents/numbers/numbers.module';
13
import {TeamComponent} from './team.component';
12 14

  
13 15
@NgModule({
14 16
  imports: [
15 17
    CommonModule,
16
    RouterModule.forChild([{
17
      path: '', component: AboutComponent
18
    }]),
18
    RouterModule.forChild([
19
      {path: '', component: AboutComponent},
20
      {path: 'team', component: TeamComponent},
21
    ]),
19 22
    BreadcrumbsModule,
20 23
    IconsModule,
21
    Schema2jsonldModule
24
    Schema2jsonldModule,
25
    NumbersModule
22 26
  ],
23
  declarations: [AboutComponent, ActionPointComponent],
27
  declarations: [AboutComponent, ActionPointComponent, TeamComponent],
24 28
  exports: [AboutComponent]
25 29
})
26 30
export class AboutModule {
modules/uoa-graph-portal/trunk/src/app/about/action-point.component.ts
7 7
    <div class="uk-position-relative" style="width: 15px; height: 15px;">
8 8
      <div>
9 9
        <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15" fill="none">
10
          <circle cx="7.5" cy="7.5" r="7.5" fill="#ee2540"/>
10
          <circle cx="7.5" cy="7.5" r="7.5" fill="var(--portal-main-color)"/>
11 11
        </svg>
12 12
      </div>
13 13
      <div class="uk-position-top-left" [@move]="state" (@move.done)="onEnd($event)">
14 14
        <svg width="15" height="15" viewBox="0 0 15 15" fill="none">
15
          <circle cx="7.4" cy="6.6" r="5" stroke="#ee2540" stroke-width="2.5" fill="none" />
15
          <circle cx="7.5" cy="6.5" r="5" stroke="var(--portal-main-color)" stroke-width="2.5" fill="none" />
16 16
        </svg>
17 17
      </div>
18 18
    </div>
modules/uoa-graph-portal/trunk/src/app/about/team.ts
1
export interface member {
2
  name: string,
3
  role: string,
4
  affiliation: string,
5
  country: string,
6
  responsibilities: string,
7
  photo: string,
8
  active?: boolean
9
}
10

  
11
export const team: member[] = [
12
  {
13
    name: 'Alessia Bardi',
14
    role: 'Researcher / Product Manager of the OpenAIRE Research Community Dashboard (CONNECT)',
15
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
16
    country: 'Italy',
17
    responsibilities:
18
      'Responsible for the design and operation of the pipeline for the materialisation and data quality evaluation of the graph\n' +
19
      'Responsible for the integration of content for the communities using OpenAIRE CONNECT services.',
20
    photo: 'alessia.jpg'
21
  },
22
  {
23
    name: 'Amelie Bäcker',
24
    role: 'Librarian',
25
    affiliation: 'Bielefeld University Library',
26
    country: 'Germany',
27
    responsibilities: 'Metadata integration (standard cases), helpdesk support (OpenAIRE Guidelines, metadata integration).',
28
    photo: 'amelie.jpg'
29
  },
30
  {
31
    name: 'Andrea Dell Amico',
32
    role: 'Τechnical Team - Systems Administrator',
33
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
34
    country: 'Italy',
35
    responsibilities: 'Working on the computing and storage infrastructure on the CNR side, maintaining the Hadoop and ElasticSearch clusters.',
36
    photo: 'dell_amico.jpg'
37
  },
38
  {
39
    name: 'Andrea Mannocci',
40
    role: 'Researcher/Data scientist',
41
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
42
    country: 'Italy',
43
    responsibilities: 'Working on data analysis and quality of data.',
44
    photo: 'mannocci.jpg'
45
  },
46
  {
47
    name: 'Andreas Czerniak',
48
    role: 'OpenAIRE Project Officer',
49
    affiliation: 'Bielefeld University Library',
50
    country: 'Germany',
51
    responsibilities: 'Responsible with the UniBI team for the aggregation (collection and transformation) of metadata.',
52
    photo: 'czerniak.jpg'
53
  },
54
  {
55
    name: 'Claudio Atzori',
56
    role: 'Software & Data Engineer / Data quality',
57
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
58
    country: 'Italy',
59
    responsibilities:
60
      'Responsible for the design of graph processing pipeline, glueing the different stages together, from the content aggregation, to the end of the supply chain at the indexing stage.',
61
    photo: 'claudio.jpg'
62
  },
63
  {
64
    name: 'Eleni Zacharia-Lamprou',
65
    role: 'Software Engineer - Postdoctoral Researcher',
66
    affiliation: 'Athena Research Center (ARC)',
67
    country: 'Greece',
68
    responsibilities: 'Implementation of Text and Data Mining (TDM) modules, used in the graph Enrichment phase.',
69
    photo: 'eleni.jpg'
70
  },
71
  {
72
    name: 'Enrico Ottonello',
73
    role: 'Technical Team',
74
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
75
    country: 'Italy',
76
    responsibilities: 'Data engineering, aggregation, data curation along the graph enrichment steps.',
77
    photo: 'enrico.jpg'
78
  },
79
  {
80
    name: 'Harry Dimitropoulos',
81
    role: 'Senior Scientific Associate',
82
    affiliation: 'Athena Research Center (ARC)',
83
    country: 'Greece',
84
    responsibilities: 'Responsible for the Text and Data Mining (TDM) modules used in the graph Enrichment phase.',
85
    photo: 'dimitropoulos.jpg'
86
  },
87
  {
88
    name: 'Lampros Smyrnaios',
89
    role: 'Software & Data Engineer / Research Assistant',
90
    affiliation: 'Athena Research Center (ARC)',
91
    country: 'Greece',
92
    responsibilities: 'Development of a software to extract the full-texts from publications\' web-pages. These full-texts are used by the Text and Data Mining (TDM) modules. Implementation of Text and Data Mining (TDM) modules, used in the graph Enrichment phase.',
93
    photo: 'lampros.jpg'
94
  },
95
  {
96
    name: 'Michele De Bonis',
97
    role: 'Technical Team',
98
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
99
    country: 'Italy',
100
    responsibilities: 'Responsible for the deduplication phase and the creation of algorithms to identify groups of data into the graph.',
101
    photo: 'de_bonis.jpg'
102
  },
103
  {
104
    name: 'Miriam Baglioni',
105
    role: 'Researcher / Software & Data Engineer / Data quality',
106
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
107
    country: 'Italy',
108
    responsibilities: 'Responsible for the graph enrichment steps not related to mining, and to the production of the graph dumps.',
109
    photo: 'miriam.jpeg'
110
  },
111
  {
112
    name: 'Paolo Manghi',
113
    role: 'Chief Technical Officer',
114
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
115
    country: 'Italy',
116
    responsibilities: 'Responsible for the design and roadmapping of the OpenAIRE infrastructure services, their operation, evolution, and interaction with third-parties.',
117
    photo: 'paolo.png'
118
  },
119
  {
120
    name: 'Sandro La Bruzzo',
121
    role: 'Technical Team',
122
    affiliation: 'Institute of Information Science and Technologies, Italian National Research Council',
123
    country: 'Italy',
124
    responsibilities: 'Responsible for the graph enrichment steps including the generation of DOIBoost.',
125
    photo: 'sandro.jpg'
126
  },
127
  {
128
    name: 'Yannis Foufoulas',
129
    role: 'Software Engineer / Researcher',
130
    affiliation: 'Athena Research Center (ARC)',
131
    country: 'Greece',
132
    responsibilities: 'Implementation of Text and Data Mining (TDM) modules used in the graph Enrichment phase.',
133
    photo: 'yiannis.jpg'
134
  }
135
]
modules/uoa-graph-portal/trunk/src/app/about/team.component.ts
1
import {Component} from '@angular/core';
2
import {Breadcrumb} from '../openaireLibrary/utils/breadcrumbs/breadcrumbs.component';
3
import {member, team} from './team';
4

  
5
@Component({
6
  selector: 'team',
7
  template: `
8
    <div>
9
      <div class="uk-section">
10
        <div class="uk-margin-large-left uk-margin-medium-bottom">
11
          <breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
12
        </div>
13
        <div class="uk-container">
14
          <h2 class="uk-text-center">Meet The Team</h2>
15
          <div class="uk-padding-small">
16
            <div class="uk-grid uk-child-width-1-3@m uk-child-width-1-2@s uk-child-width-1-1 uk-margin-large-top" uk-grid>
17
              <div *ngFor="let member of team;" class="uk-card uk-card-flip" [class.uk-active]="member.active === true">
18
                <div class="uk-card-flip-inner">
19
                  <div class="front">
20
                    <div class="uk-padding">
21
                      <div class="uk-text-center">
22
                        <img [src]="'assets/graph-assets/about/team/' + member.photo">
23
                        <div class="uk-margin-medium-top role">
24
                          <h6 class="portal-color">{{member.name}}</h6>
25
                          <div class="uk-text-muted">
26
                            {{member.role}}
27
                          </div>
28
                        </div>
29
                      </div>
30
                    </div>
31
                    <div class="uk-position-bottom-center uk-margin-bottom">
32
                      <a class="portal-link" (click)="member.active = true">Learn more</a>
33
                    </div>
34
                  </div>
35
                  <div class="back">
36
                    <div class="uk-padding">
37
                      <div class="uk-text-center">
38
                        <img [src]="'assets/graph-assets/about/team/' + member.photo">
39
                        <div class="uk-margin-medium-top">
40
                          <h6 class="uk-text-center portal-color">{{member.name}}</h6>
41
                        </div>
42
                      </div>
43
                      <div class="uk-margin-small-bottom">
44
                        <span class="uk-text-bold">Role: </span> {{member.role}}
45
                      </div>
46
                      <div class="uk-margin-small-bottom">
47
                        <span class="uk-text-bold">Affiliation: </span> {{member.affiliation}}
48
                      </div>
49
                      <div>
50
                        <span class="uk-text-bold">Country: </span> {{member.country}}
51
                      </div>
52
                      <!-- <div>
53
                         <span class="uk-text-bold">Responsibilities: </span> {{member.responsibilities}}
54
                       </div>-->
55
                    </div>
56
                    <div class="uk-position-bottom-center uk-margin-bottom">
57
                      <a class="portal-link" (click)="member.active = false">Back</a>
58
                    </div>
59
                  </div>
60
                </div>
61
              </div>
62
            </div>
63
          </div>
64
        </div>
65
      </div>
66
    </div>
67
  `,
68
  styleUrls: ['team.component.css']
69
})
70
export class TeamComponent {
71
  public team: member[] = team;
72
  public breadcrumbs: Breadcrumb[] = [
73
    {
74
      name: 'home',
75
      route: '/'
76
    },
77
    {
78
      name: 'about',
79
      route: '/about'
80
    },
81
    {
82
      name: 'Team'
83
    }
84
  ];
85
}
modules/uoa-graph-portal/trunk/src/app/about/about.component.html
79 79
      <div class="uk-flex uk-flex-center uk-inline uk-margin-medium-top">
80 80
        <img [src]="'assets/graph-assets/about/architecture/'+architectureImage"
81 81
             class="uk-width-4-5 architecture-image">
82

  
83
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 27%; top: 48%"
82
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 27%; top: 51.5%"
84 83
           (click)="changeTab(0)" routerLink="/about" fragment="tabs_card"
85 84
           (mouseenter)="architectureImage = 'aggregation_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
86 85
          <action-point [class.uk-invisible]="architectureImage == 'aggregation_hover.png'"></action-point>
87 86
        </a>
88
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 47%; top: 48%"
87
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 47%; top: 51.5%"
89 88
           (click)="changeTab(1)" routerLink="/about" fragment="tabs_card"
90 89
           (mouseenter)="architectureImage = 'deduplication_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
91 90
          <action-point [class.uk-invisible]="architectureImage == 'deduplication_hover.png'"></action-point>
92 91
        </a>
93
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 58%; top: 48%"
92
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 58%; top: 51.5%"
94 93
           (click)="changeTab(2)" routerLink="/about" fragment="tabs_card"
95 94
           (mouseenter)="architectureImage = 'enrichment_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
96 95
          <action-point [class.uk-invisible]="architectureImage == 'enrichment_hover.png'"></action-point>
97 96
        </a>
98
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 70%; top: 48%"
97
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 70%; top: 51.5%"
99 98
           (click)="changeTab(3)" routerLink="/about" fragment="tabs_card"
100 99
           (mouseenter)="architectureImage = 'post_cleaning_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
101 100
          <action-point [class.uk-invisible]="architectureImage == 'post_cleaning_hover.png'"></action-point>
102 101
        </a>
103
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 76%; top: 32%"
102
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 75%; top: 35%;"
104 103
           (click)="changeTab(4)" routerLink="/about" fragment="tabs_card"
105 104
           (mouseenter)="architectureImage = 'indexing_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
106 105
          <action-point [class.uk-invisible]="architectureImage == 'indexing_hover.png'"></action-point>
107 106
        </a>
108
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 76%; top: 72%"
107
        <a class="uk-position-absolute uk-transform-center uk-padding" style="left: 75%; top: 72%"
109 108
           (click)="changeTab(5)" routerLink="/about" fragment="tabs_card"
110 109
           (mouseenter)="architectureImage = 'stats_analysis_hover.png'" (mouseleave)="architectureImage = 'gray.png'">
111 110
          <action-point [class.uk-invisible]="architectureImage == 'stats_analysis_hover.png'"></action-point>
......
122 121
            <li><a>Indexing</a></li>
123 122
            <li><a>Stats Analysis</a></li>
124 123
          </ul>
125

  
126 124
          <ul class="uk-switcher uk-margin">
127 125
            <li>
128
              <!--            uk-grid-->
129 126
              <div class=" uk-margin-large-top uk-text-small">
130
                <!--              <div class="uk-width-3-5@m">-->
131 127
                <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
132 128
                     src="assets/graph-assets/about/architecture/aggregation.png" alt="Aggregation">
133
                <div
134
                    [class]="'uk-margin-bottom uk-margin-medium-right '+(aggregationReadMore ? '' : 'lines-18 multi-line-ellipsis')">
129
                <div class="uk-margin-bottom uk-margin-medium-right uk-text-small lines-18"
130
                     [class.multi-line-ellipsis]="!aggregationReadMore">
135 131
                  <div>
136 132
                    OpenAIRE collects metadata records from a variety of content providers as described in
137 133
                    <a href="https://www.openaire.eu/aggregation-and-content-provision-workflows" target="_blank">https://www.openaire.eu/aggregation-and-content-provision-workflows</a>.
......
139 135
                    OpenAIRE aggregates metadata records describing objects of the research life-cycle from content
140 136
                    providers compliant to the
141 137
                    <a href="https://guidelines.openaire.eu" target="_blank">OpenAIRE guidelines</a>
142
                    and from entity registries (i.e. data sources offering authoritative lists of entities, like OpenDOAR,
138
                    and from entity registries (i.e. data sources offering authoritative lists of entities, like
139
                    OpenDOAR,
143 140
                    re3data, DOAJ, and funder databases).
144
                    After collection, metadata are transformed according to the OpenAIRE internal metadata model, which is
141
                    After collection, metadata are transformed according to the OpenAIRE internal metadata model, which
142
                    is
145 143
                    used to generate the final OpenAIRE Research Graph that you can access from the OpenAIRE portal and
146 144
                    the
147 145
                    APIs.
148 146
                    <br><br>
149
                    The transformation process includes the application of cleaning functions whose goal is to ensure that
147
                    The transformation process includes the application of cleaning functions whose goal is to ensure
148
                    that
150 149
                    values are harmonised according to a common format (e.g. dates as YYYY-MM-dd) and, whenever
151 150
                    applicable,
152 151
                    to a common controlled vocabulary.
153 152
                    The controlled vocabularies used for cleansing are accessible at
154
                    <a href="http://api.openaire.eu/vocabularies" target="_blank">http://api.openaire.eu/vocabularies</a>.
153
                    <a href="http://api.openaire.eu/vocabularies"
154
                       target="_blank">http://api.openaire.eu/vocabularies</a>.
155 155
                    Each vocabulary features a set of controlled terms, each with one code, one label, and a set of
156 156
                    synonyms.
157 157
                    If a synonym is found as field value, the value is updated with the corresponding term.
158
                    Also, the OpenAIRE Research Graph is extended with other relevant scholarly communication sources that
159
                    are too big to be integrated via the “normal” aggregation mechanism: DOIBoost (which merges Crossref,
160
                    ORCID, Microsoft Academic Graph, and Unpaywall), and ScholeXplorer, one of the Scholix hubs offering a
158
                    Also, the OpenAIRE Research Graph is extended with other relevant scholarly communication sources
159
                    that
160
                    are too big to be integrated via the “normal” aggregation mechanism: DOIBoost (which merges
161
                    Crossref,
162
                    ORCID, Microsoft Academic Graph, and Unpaywall), and ScholeXplorer, one of the Scholix hubs offering
163
                    a
161 164
                    large set of links between research literature and data.
162 165
                  </div>
163 166
                </div>
164
                <div *ngIf="!aggregationReadMore" class="uk-width-3-5@m uk-text-center clickable"
165
                     (click)="aggregationReadMore = true">
166
                  <a class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
167
                <div *ngIf="!aggregationReadMore" class="uk-text-center clickable">
168
                  <a (click)="aggregationReadMore = true" class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
167 169
                </div>
168
                <div *ngIf="aggregationReadMore" class="uk-width-3-5@m uk-text-center clickable"
169
                     (click)="aggregationReadMore = false">
170
                  <a class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
170
                <div *ngIf="aggregationReadMore" class="uk-text-center clickable">
171
                  <a (click)="aggregationReadMore = false" routerLink="./" fragment="tabs_card" class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
171 172
                </div>
172
                <!--              </div>-->
173
                <!--              <div class="uk-width-expand">-->
174
                <!--                <img src="assets/graph-assets/about/architecture/aggregation.png">-->
175
                <!--              </div>-->
176 173
              </div>
177 174
            </li>
178 175
            <li>
179
              <div class="uk-grid">
180
                <!--              <div class="uk-width-3-5@m">-->
181
                <div class="uk-margin-bottom uk-margin-medium-right uk-text-small">
176
              <div class="uk-margin-bottom uk-text-small">
182 177
                  <ul class="uk-subnav button-tab" uk-switcher>
183 178
                    <li><a>Clustering</a></li>
184 179
                    <li><a>Matching & Election</a></li>
185 180
                  </ul>
186

  
187 181
                  <ul class="uk-switcher uk-margin align-list">
188 182
                    <li>
189 183
                      <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
190 184
                           src="assets/graph-assets/about/architecture/deduplication.svg" alt="Deduplication">
191
                      <div
192
                          [class]="'uk-margin-bottom uk-margin-medium-right uk-text-small '+(dedupClusteringReadMore ? '' : 'lines-18 multi-line-ellipsis')">
185
                      <div class="uk-margin-bottom uk-margin-medium-right uk-text-small lines-18"
186
                           [class.multi-line-ellipsis]="!dedupClusteringReadMore">
193 187
                        <div>
194 188
                          <div>
195
                            Clustering is a common heuristics used to overcome the N x N complexity required to match all
189
                            Clustering is a common heuristics used to overcome the N x N complexity required to match
190
                            all
196 191
                            pairs of objects to identify the equivalent ones.
197
                            The challenge is to identify a clustering function that maximizes the chance of comparing only
192
                            The challenge is to identify a clustering function that maximizes the chance of comparing
193
                            only
198 194
                            records that may lead to a match, while minimizing the number of records that will not be
199 195
                            matched while being equivalent.
200
                            Since the equivalence function is to some level tolerant to minimal errors (e.g. switching of
196
                            Since the equivalence function is to some level tolerant to minimal errors (e.g. switching
197
                            of
201 198
                            characters in the title, or minimal difference in letters), we need this function to be not
202 199
                            too
203 200
                            precise (e.g. a hash of the title), but also not too flexible (e.g. random ngrams of the
......
207 204
                            different versions and no clustering function will ever bring them into the same cluster.
208 205
                            To match these requirements OpenAIRE clustering for products works with two functions:
209 206
                          </div>
210

  
211 207
                          <ul class="portal-circle">
212 208
                            <li>
213 209
                              <div>DOI: the function generates the DOI when this is provided as part of the record
......
233 229
                          </ul>
234 230
                          <div>
235 231
                            To give an idea, this configuration generates around 77Mi blocks, which we limited to 200
236
                            records each (only 15K blocks are affected by the cut), and entails 260Bi matches. Matches in
232
                            records each (only 15K blocks are affected by the cut), and entails 260Bi matches. Matches
233
                            in
237 234
                            a
238 235
                            block are performed using a “sliding window” set to 80 records. The records are sorted
239 236
                            lexicographically on a normalized version of their titles. The 1st record is matched against
......
242 239
                          </div>
243 240
                        </div>
244 241
                      </div>
245
                      <div *ngIf="!dedupClusteringReadMore" class="uk-width-3-5@m uk-text-center clickable"
246
                           (click)="dedupClusteringReadMore = true">
247
                        <a class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
242
                      <div *ngIf="!dedupClusteringReadMore" class="uk-text-center clickable">
243

  
244
                        <a (click)="dedupClusteringReadMore = true" class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
248 245
                      </div>
249
                      <div *ngIf="dedupClusteringReadMore" class="uk-width-3-5@m uk-text-center clickable"
250
                           (click)="dedupClusteringReadMore = false">
251
                        <a class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
246
                      <div *ngIf="dedupClusteringReadMore" class="uk-text-center clickable">
247
                        <a (click)="dedupClusteringReadMore = false;" routerLink="./" fragment="tabs_card" class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
252 248
                      </div>
253 249
                    </li>
254 250
                    <li>
255 251
                      <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
256 252
                           src="assets/graph-assets/about/architecture/deduplication.svg" alt="Deduplication">
257
                      <div
258
                          [class]="'uk-margin-bottom uk-margin-medium-right uk-text-small '+(dedupMatchingAndElectionReadMore ? '' : 'lines-18 multi-line-ellipsis')">
253
                      <div class="uk-margin-bottom uk-margin-medium-right uk-text-small lines-18"
254
                           [class.multi-line-ellipsis]="!dedupMatchingAndElectionReadMore">
259 255
                        <div>
260 256
                          <div>
261 257
                            Once the clusters have been built, the algorithm proceeds with the comparisons.
......
305 301
                                    The titles of the two records are normalised and compared for similarity by applying
306 302
                                    the
307 303
                                    Levenstein distance algorithm.
308
                                    The algorithm returns a number in the range [0,1], where 0 means “very different” and
304
                                    The algorithm returns a number in the range [0,1], where 0 means “very different”
305
                                    and
309 306
                                    1
310 307
                                    means “equal”.
311 308
                                    If the distance is greater than or equal 0,99 the two records are identified as
......
314 311
                                </li>
315 312
                                <li>
316 313
                                  <div>Dates are not regarded for equivalence matching because different versions of the
317
                                    same records should be merged and may be published on different dates, e.g. pre-print
314
                                    same records should be merged and may be published on different dates, e.g.
315
                                    pre-print
318 316
                                    and published version of an article.
319 317
                                  </div>
320 318
                                </li>
......
322 320
                            </li>
323 321
                          </ul>
324 322
                          <div>
325
                            Once the equivalence relationships between pairs of records are set, the groups of equivalent
323
                            Once the equivalence relationships between pairs of records are set, the groups of
324
                            equivalent
326 325
                            records are obtained (transitive closure, i.e. “mesh”).
327
                            From such sets a new representative object is obtained, which inherits all properties from the
326
                            From such sets a new representative object is obtained, which inherits all properties from
327
                            the
328 328
                            merged records and keeps track of their provenance.
329 329
                            The ID of the record is obtained by appending the prefix “dedup_” to the MD5 of the first ID
330 330
                            (given their lexicographical ordering).
......
334 334
                          </div>
335 335
                        </div>
336 336
                      </div>
337
                      <div *ngIf="!dedupMatchingAndElectionReadMore" class="uk-width-3-5@m uk-text-center clickable"
338
                           (click)="dedupMatchingAndElectionReadMore = true">
339
                        <a class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
337
                      <div *ngIf="!dedupMatchingAndElectionReadMore" class="uk-text-center clickable">
338
                        <a (click)="dedupMatchingAndElectionReadMore = true" class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
340 339
                      </div>
341
                      <div *ngIf="dedupMatchingAndElectionReadMore" class="uk-width-3-5@m uk-text-center clickable"
342
                           (click)="dedupMatchingAndElectionReadMore = false">
343
                        <a class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
340
                      <div *ngIf="dedupMatchingAndElectionReadMore" class="uk-text-center clickable">
341
                        <a (click)="dedupMatchingAndElectionReadMore = false" routerLink="./" fragment="tabs_card" class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
344 342
                      </div>
345 343
                    </li>
346 344
                  </ul>
347 345
                </div>
348
                <!--              </div>-->
349
                <!--              <div class="uk-width-expand">-->
350
                <!--                <img src="assets/graph-assets/about/architecture/deduplication.svg">-->
351
                <!--              </div>-->
352
              </div>
353 346
            </li>
354 347
            <li>
355
              <div class="uk-grid">
356
                <!--              <div class="uk-width-3-5@m">-->
357
                <div class="uk-margin-bottom uk-margin-medium-right uk-text-small">
348
              <div class="uk-margin-bottom uk-text-small">
358 349
                  <ul class="uk-subnav button-tab uk-grid uk-grid-small" uk-switcher>
359
                    <li><a>General</a></li>
360 350
                    <li><a>Mining</a></li>
361 351
                    <li><a>Bulk tagging/ Deduction</a></li>
362 352
                    <li><a>Propagation</a></li>
363 353
                  </ul>
364

  
365 354
                  <ul class="uk-switcher uk-margin">
366 355
                    <li>
367 356
                      <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
368 357
                           src="assets/graph-assets/about/architecture/enrichment.svg" alt="Enrichment">
369
                      <div class="uk-margin-bottom uk-margin-medium-right uk-text-small">
370
                        <p>
371
                          The aggregation processes are continuously running and apply vocabularies as they are in a given
372
                          moment of time.
373
                          It could be the case that a vocabulary changes after the aggregation of one data source has
374
                          finished,
375
                          thus the aggregated content does not reflect the current status of the controlled vocabularies.
358
                      <div class="uk-margin-bottom uk-margin-medium-right uk-text-small lines-18"
359
                           [class.multi-line-ellipsis]="!enrichmentMiningReadMore">
360
                        <div>
361
                          The OpenAIRE Research Graph is enriched by links mined by OpenAIRE’s full-text mining
362
                          algorithms
363
                          that scan the plaintexts of publications for funding information, references to datasets,
364
                          software URIs, accession numbers of bioetities, and EPO patent mentions.
365
                          Custom mining modules also link research objects to specific research communities, initiatives
366
                          and infrastructures.
367
                          In addition, other inference modules provide content-based document classification, document
368
                          similarity, citation matching, and author affiliation matching.
376 369
                          <br><br>
377
                          In addition, the integration of ScholeXplorer and DOIBooost and some enrichment processes
378
                          applied
379
                          on the raw
380
                          and on the de-duplicated graph may introduce values that do not comply with the current status
381
                          of
382
                          the OpenAIRE controlled vocabularies.
383
                          For these reasons, we included a final step of cleansing at the end of the workflow
384
                          materialisation.
385
                          The output of the final cleansing step is the final version of the OpenAIRE Research Graph.
386
                        </p>
387
                      </div>
388
                    </li>
389
                    <li>
390
                      <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
391
                           src="assets/graph-assets/about/architecture/enrichment.svg" alt="Enrichment">
392
                      <div
393
                          [class]="'uk-margin-bottom uk-margin-medium-right uk-text-small '+(enrichmentMiningReadMore ? '' : 'lines-18 multi-line-ellipsis')">
394
                        <div>
395
                          <div>
396
                            The OpenAIRE Research Graph is enriched by links mined by OpenAIRE’s full-text mining
397
                            algorithms
398
                            that scan the plaintexts of publications for funding information, references to datasets,
399
                            software URIs, accession numbers of bioetities, and EPO patent mentions.
400
                            Custom mining modules also link research objects to specific research communities, initiatives
401
                            and infrastructures.
402
                            In addition, other inference modules provide content-based document classification, document
403
                            similarity, citation matching, and author affiliation matching.
404
                            <br><br>
405
                            <span class="portal-color">Project mining</span>
406
                            in OpenAIRE text mines the full-texts of publications in order to extract matches to funding
407
                            project codes/IDs.
408
                            The mining algorithm works by utilising
409
                            (i) the grant identifier, and
410
                            (ii) the project acronym (if available) of each project.
411
                            The mining algorithm:
412
                            (1) Preprocesses/normalizes the full-texts using several functions, which depend on the
413
                            characteristics of each funder (i.e., the format of the grant identifiers), such as stopword
414
                            and/or punctuation removal, tokenization, stemming, converting to lowercase; then
415
                            (2) String matching of grant identifiers against the normalized text is done using database
416
                            techniques; and
417
                            (3) The results are validated and cleaned using the context near the match by looking at the
418
                            context around the matched ID for relevant metadata and positive or negative words/phrases, in
419
                            order to calculate a confidence value for each publication-->project link.
420
                            A confidence threshold is set to optimise high accuracy while minimising false positives, such
421
                            as matches with page or report numbers, post/zip codes, parts of telephone numbers, DOIs or
422
                            URLs, accession numbers.
423
                            The algorithm also applies rules for disambiguating results, as different funders can share
424
                            identical project IDs; for example, grant number 633172 could refer to H2020 project EuroMix
425
                            but
426
                            also to Australian-funded NHMRC project “Brain activity (EEG) analysis and brain imaging
427
                            techniques to measure the neurobiological effects of sleep apnea”.
428
                            Project mining works very well and was the first Text & Data Mining (TDM) service of OpenAIRE.
429
                            Performance results vary from funder to funder but precision is higher than 98% for all
430
                            funders
431
                            and 99.5% for EC projects.
432
                            Recall is higher than 95% (99% for EC projects), when projects are properly acknowledged using
433
                            project/grant IDs.
434
                            <br><br>
435
                            <span class="portal-color">Dataset extraction</span>
436
                            runs on publications full-texts as described in “High pass text-filtering for Citation
437
                            matching”, TPDL 2017[1].
438
                            In particular, we search for citations to datasets using their DOIs, titles and other metadata
439
                            (i.e., dates, creator names, publishers, etc.).
440
                            We extract parts of the text which look like citations and search for datasets using database
441
                            join and pattern matching techniques.
442
                            Based on the experiments described in the paper, precision of the dataset extraction module is
443
                            98.5% and recall is 97.4% but it is also probably overestimated since it does not take into
444
                            account corruptions that may take place during pdf to text extraction.
445
                            It is calculated on the extracted full-texts of small samples from PubMed and arXiv.
446
                            <br><br>
447
                            <span class="portal-color">Software extraction</span>
448
                            runs also on parts of the text which look like citations.
449
                            We search the citations for links to software in open software repositories, specifically
450
                            github, sourceforge, bitbucket and the google code archive.
451
                            After that, we search for links that are included in Software Heritage (SH,
452
                            https://www.softwareheritage.org) and return the permanent URL that SH provides for each
453
                            software project.
454
                            We also enrich this content with user names, titles and descriptions of the software projects
455
                            using web mining techniques.
456
                            Since software mining is based on URL matching, our precision is 100% (we return a software
457
                            link
458
                            only if we find it in the text and there is no need to disambiguate).
459
                            As for recall rate, this is not calculable for this mining task.
460
                            Although we apply all the necessary normalizations to the URLs in order to overcome usual
461
                            issues
462
                            (e.g., http or https, existence of www or not, lower/upper case), we do not calculate cases
463
                            where a software is mentioned using its name and not by a link from the supported software
464
                            repositories.
465
                            <br><br>
466
                            <span class="portal-color">For the extraction of bio-entities</span>, we focus on Protein Data
467
                            Bank (PDB) entries.
468
                            We have downloaded the database with PDB codes and we update it regularly.
469
                            We search through the whole publication’s full-text for references to PDB codes.
470
                            We apply disambiguation rules (e.g., there are PDB codes that are the same as antibody codes
471
                            or
472
                            other issues) so that we return valid results.
473
                            Current precision is 98%.
474
                            Although it's risky to mention recall rates since these are usually overestimated, we have
475
                            calculated a recall rate of 98% using small samples from pubmed publications.
476
                            Moreover, our technique is able to identify about 30% more links to proteins than the ones
477
                            that
478
                            are tagged in Pubmed xmls.
479
                            <br><br>
480
                            <span class="portal-color">Other text-mining modules</span> include mining for links to EPO
481
                            patents, or custom mining modules for linking research objects to specific research
482
                            communities,
483
                            initiatives and infrastructures, e.g. COVID-19 mining module.
484
                            Apart from text-mining modules, OpenAIRE also provides a document classification service that
485
                            employs analysis of free text stemming from the abstracts of the publications.
486
                            The purpose of applying a document classification module is to assign a scientific text one or
487
                            more predefined content classes.
488
                            In OpenAIRE, the currently used taxonomies are arXiv, MeSH (Medical Subject Headings), ACM and
489
                            DDC (Dewey Decimal Classification, or Dewey Decimal System).
490
                            <br><br>
491
                            <hr>
492
                            [1] Foufoulas, Y., Stamatogiannakis, L., Dimitropoulos, H., & Ioannidis, Y. (2017, September).
493
                            High-Pass Text Filtering for Citation Matching.
494
                            In International Conference on Theory and Practice of Digital Libraries (pp. 355-366).
495
                            Springer,
496
                            Cham.
497
                          </div>
370
                          <span class="portal-color">Project mining</span>
371
                          in OpenAIRE text mines the full-texts of publications in order to extract matches to funding
372
                          project codes/IDs.
373
                          The mining algorithm works by utilising
374
                          (i) the grant identifier, and
375
                          (ii) the project acronym (if available) of each project.
376
                          The mining algorithm:
377
                          (1) Preprocesses/normalizes the full-texts using several functions, which depend on the
378
                          characteristics of each funder (i.e., the format of the grant identifiers), such as stopword
379
                          and/or punctuation removal, tokenization, stemming, converting to lowercase; then
380
                          (2) String matching of grant identifiers against the normalized text is done using database
381
                          techniques; and
382
                          (3) The results are validated and cleaned using the context near the match by looking at the
383
                          context around the matched ID for relevant metadata and positive or negative words/phrases, in
384
                          order to calculate a confidence value for each publication-->project link.
385
                          A confidence threshold is set to optimise high accuracy while minimising false positives, such
386
                          as matches with page or report numbers, post/zip codes, parts of telephone numbers, DOIs or
387
                          URLs, accession numbers.
388
                          The algorithm also applies rules for disambiguating results, as different funders can share
389
                          identical project IDs; for example, grant number 633172 could refer to H2020 project EuroMix
390
                          but
391
                          also to Australian-funded NHMRC project “Brain activity (EEG) analysis and brain imaging
392
                          techniques to measure the neurobiological effects of sleep apnea”.
393
                          Project mining works very well and was the first Text & Data Mining (TDM) service of OpenAIRE.
394
                          Performance results vary from funder to funder but precision is higher than 98% for all
395
                          funders
396
                          and 99.5% for EC projects.
397
                          Recall is higher than 95% (99% for EC projects), when projects are properly acknowledged using
398
                          project/grant IDs.
399
                          <br><br>
400
                          <span class="portal-color">Dataset extraction</span>
401
                          runs on publications full-texts as described in “High pass text-filtering for Citation
402
                          matching”, TPDL 2017[1].
403
                          In particular, we search for citations to datasets using their DOIs, titles and other metadata
404
                          (i.e., dates, creator names, publishers, etc.).
405
                          We extract parts of the text which look like citations and search for datasets using database
406
                          join and pattern matching techniques.
407
                          Based on the experiments described in the paper, precision of the dataset extraction module is
408
                          98.5% and recall is 97.4% but it is also probably overestimated since it does not take into
409
                          account corruptions that may take place during pdf to text extraction.
410
                          It is calculated on the extracted full-texts of small samples from PubMed and arXiv.
411
                          <br><br>
412
                          <span class="portal-color">Software extraction</span>
413
                          runs also on parts of the text which look like citations.
414
                          We search the citations for links to software in open software repositories, specifically
415
                          github, sourceforge, bitbucket and the google code archive.
416
                          After that, we search for links that are included in Software Heritage (SH,
417
                          https://www.softwareheritage.org) and return the permanent URL that SH provides for each
418
                          software project.
419
                          We also enrich this content with user names, titles and descriptions of the software projects
420
                          using web mining techniques.
421
                          Since software mining is based on URL matching, our precision is 100% (we return a software
422
                          link
423
                          only if we find it in the text and there is no need to disambiguate).
424
                          As for recall rate, this is not calculable for this mining task.
425
                          Although we apply all the necessary normalizations to the URLs in order to overcome usual
426
                          issues
427
                          (e.g., http or https, existence of www or not, lower/upper case), we do not calculate cases
428
                          where a software is mentioned using its name and not by a link from the supported software
429
                          repositories.
430
                          <br><br>
431
                          <span class="portal-color">For the extraction of bio-entities</span>, we focus on Protein Data
432
                          Bank (PDB) entries.
433
                          We have downloaded the database with PDB codes and we update it regularly.
434
                          We search through the whole publication’s full-text for references to PDB codes.
435
                          We apply disambiguation rules (e.g., there are PDB codes that are the same as antibody codes
436
                          or
437
                          other issues) so that we return valid results.
438
                          Current precision is 98%.
439
                          Although it's risky to mention recall rates since these are usually overestimated, we have
440
                          calculated a recall rate of 98% using small samples from pubmed publications.
441
                          Moreover, our technique is able to identify about 30% more links to proteins than the ones
442
                          that
443
                          are tagged in Pubmed xmls.
444
                          <br><br>
445
                          <span class="portal-color">Other text-mining modules</span> include mining for links to EPO
446
                          patents, or custom mining modules for linking research objects to specific research
447
                          communities,
448
                          initiatives and infrastructures, e.g. COVID-19 mining module.
449
                          Apart from text-mining modules, OpenAIRE also provides a document classification service that
450
                          employs analysis of free text stemming from the abstracts of the publications.
451
                          The purpose of applying a document classification module is to assign a scientific text one or
452
                          more predefined content classes.
453
                          In OpenAIRE, the currently used taxonomies are arXiv, MeSH (Medical Subject Headings), ACM and
454
                          DDC (Dewey Decimal Classification, or Dewey Decimal System).
455
                          <br><br>
456
                          <hr>
457
                          [1] Foufoulas, Y., Stamatogiannakis, L., Dimitropoulos, H., & Ioannidis, Y. (2017, September).
458
                          High-Pass Text Filtering for Citation Matching.
459
                          In International Conference on Theory and Practice of Digital Libraries (pp. 355-366).
460
                          Springer,
461
                          Cham.
498 462
                        </div>
499 463
                      </div>
500
                      <div *ngIf="!enrichmentMiningReadMore" class="uk-width-3-5@m uk-text-center clickable"
501
                           (click)="enrichmentMiningReadMore = true">
502
                        <a class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
464
                      <div *ngIf="!enrichmentMiningReadMore" class="uk-text-center clickable">
465
                        <a (click)="enrichmentMiningReadMore = true" class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
503 466
                      </div>
504
                      <div *ngIf="enrichmentMiningReadMore" class="uk-width-3-5@m uk-text-center clickable"
505
                           (click)="enrichmentMiningReadMore = false">
506
                        <a class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
467
                      <div *ngIf="enrichmentMiningReadMore" class="uk-text-center clickable">
468
                        <a (click)="enrichmentMiningReadMore = false" routerLink="./" fragment="tabs_card" class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
507 469
                      </div>
508 470
                    </li>
509 471
                    <li>
......
521 483
                          <li>Zenodo community (16K results tagged)</li>
522 484
                          <li>the data source it comes from (250K results tagged)</li>
523 485
                        </ul>
524
                        The list of subjects, Zenodo communities and data sources used to enrich the products are defined
486
                        The list of subjects, Zenodo communities and data sources used to enrich the products are
487
                        defined
525 488
                        by
526 489
                        the managers of the community gateway or infrastructure monitoring dashboard associated with the
527 490
                        RC/RI.
......
530 493
                    <li>
531 494
                      <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
532 495
                           src="assets/graph-assets/about/architecture/enrichment.svg" alt="Enrichment">
533
                      <div
534
                          [class]="'uk-margin-bottom uk-margin-medium-right uk-text-small '+(enrichmentPropagationReadMore ? '' : 'lines-18 multi-line-ellipsis')">
535
                        <div>
496
                      <div class="uk-margin-bottom uk-margin-medium-right uk-text-small lines-18"
497
                           [class.multi-line-ellipsis]="!enrichmentPropagationReadMore">
536 498
                          <div>
537
                            This process “propagates” properties and links from one product to another if between the two
499
                            This process “propagates” properties and links from one product to another if between the
500
                            two
538 501
                            there is a “strong” semantic relationship.
539 502
                            <br><br>
540 503
                            As of September 2020, the following procedures are in place:
......
549 512
                                by”
550 513
                                a dataset D.
551 514
                                Dataset D will get the link to project P.
552
                                The relationships considered for this procedure are “isSupplementedBy” and “supplements”.
515
                                The relationships considered for this procedure are “isSupplementedBy” and
516
                                “supplements”.
553 517
                              </li>
554 518
                              <li>
555
                                Propagation of related community/infrastructure/initiative from organizations to products
519
                                Propagation of related community/infrastructure/initiative from organizations to
520
                                products
556 521
                                via affiliation relationships: e.g. a publication with an author affiliated with
557 522
                                organization O.
558
                                The manager of the community gateway C declared that the outputs of O are all relevant for
523
                                The manager of the community gateway C declared that the outputs of O are all relevant
524
                                for
559 525
                                his/her community C.
560 526
                                The publication is tagged as relevant for C.
561 527
                              </li>
......
563 529
                                Propagation of related community/infrastructure/initiative to related products: e.g.
564 530
                                publication associated to community C is supplemented by a dataset D.
565 531
                                Dataset D will get the association to C.
566
                                The relationships considered for this procedure are “isSupplementedBy” and “supplements”.
532
                                The relationships considered for this procedure are “isSupplementedBy” and
533
                                “supplements”.
567 534
                              </li>
568 535
                              <li>
569 536
                                Propagation of ORCID identifiers to related products, if the products have the same
......
573 540
                                the same authors as the publication. Authors of D are enriched with the ORCIDs available
574 541
                                in
575 542
                                the publication.
576
                                The relationships considered for this procedure are “isSupplementedBy” and “supplements”.
543
                                The relationships considered for this procedure are “isSupplementedBy” and
544
                                “supplements”.
577 545
                              </li>
578 546
                            </ul>
579 547
                          </div>
580
                        </div>
581 548
                      </div>
582
                      <div *ngIf="!enrichmentPropagationReadMore" class="uk-width-3-5@m uk-text-center clickable"
583
                           (click)="enrichmentPropagationReadMore = true">
584
                        <a class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
549
                      <div *ngIf="!enrichmentPropagationReadMore" class="uk-text-center clickable">
550
                        <a (click)="enrichmentPropagationReadMore = true" class="custom-explore-toggle">Read more<span uk-icon="chevron-down"></span></a>
585 551
                      </div>
586
                      <div *ngIf="enrichmentPropagationReadMore" class="uk-width-3-5@m uk-text-center clickable"
587
                           (click)="enrichmentPropagationReadMore = false">
588
                        <a class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
552
                      <div *ngIf="enrichmentPropagationReadMore" class="uk-text-center clickable">
553
                        <a (click)="enrichmentPropagationReadMore = false" routerLink="./" fragment="tabs_card" class="custom-explore-toggle">Read less<span uk-icon="chevron-up"></span></a>
589 554
                      </div>
590 555
                    </li>
591 556
                  </ul>
592 557
                </div>
593
                <!--              </div>-->
594
                <!--              <div class="uk-width-expand">-->
595
                <!--                <img src="assets/graph-assets/about/architecture/enrichment.svg">-->
596
                <!--              </div>-->
597
              </div>
598 558
            </li>
599 559
            <li>
600 560
              <div class="uk-text-small uk-margin-large-top">
601
                <!--              <div class="uk-width-3-5@m">-->
602 561
                <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
603 562
                     src="assets/graph-assets/about/architecture/post_cleaning.svg" alt="Post Cleaning">
604 563
                <div class="uk-margin-bottom uk-margin-medium-right">
605 564
                  <p>
606
                    The aggregation processes are continuously running and apply vocabularies as they are in a given moment of time.
607
                    It could be the case that a vocabulary changes after the aggregation of one data source has finished, thus the aggregated content does not reflect the current status of the controlled vocabularies.
565
                    The aggregation processes are continuously running and apply vocabularies as they are in a given
566
                    moment of time.
567
                    It could be the case that a vocabulary changes after the aggregation of one data source has
568
                    finished, thus the aggregated content does not reflect the current status of the controlled
569
                    vocabularies.
608 570
                    <br><br>
609
                    In addition, the integration of ScholeXplorer and DOIBoost and some enrichment processes applied on the raw and on the de-duplicated graph may introduce values that do not comply with the current status of the OpenAIRE controlled vocabularies.
571
                    In addition, the integration of ScholeXplorer and DOIBoost and some enrichment processes applied on
572
                    the raw and on the de-duplicated graph may introduce values that do not comply with the current
573
                    status of the OpenAIRE controlled vocabularies.
610 574
                    For these reasons, we included a final step of cleansing at the end of the workflow materialisation.
611 575
                    The output of the final cleansing step is the final version of the OpenAIRE Research Graph.
612 576
                  </p>
613 577
                </div>
614
                <!--              </div>-->
615
                <!--              <div class="uk-width-expand">-->
616
                <!--                <img src="assets/graph-assets/about/architecture/post_cleaning.svg">-->
617
                <!--              </div>-->
618 578
              </div>
619 579
            </li>
620 580
            <li>
621 581
              <div class="uk-text-small uk-margin-large-top">
622
                <!--              <div class="uk-width-3-5@m">-->
623 582
                <img class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image"
624 583
                     src="assets/graph-assets/about/architecture/indexing.svg" alt="Indexing">
625 584
                <div class="uk-margin-bottom uk-margin-medium-right">
......
637 596
                    </li>
638 597
                    <li class="uk-margin-small-bottom">
639 598
                      <span class="portal-color">DSpace & EPrints</span>
640
                      repositories can install the OpenAIRE plugin to expose OpenAIRE compliant metadata records via their
599
                      repositories can install the OpenAIRE plugin to expose OpenAIRE compliant metadata records via
600
                      their
641 601
                      OAI-PMH endpoint and offer to researchers the possibility to link their depositions to the funding
642 602
                      project, by selecting it from the list of project provided by OpenAIRE
643 603
                    </li>
......
647 607
                      Sygma automatically fetches from the OpenAIRE Search API the list of publications and datasets in
648 608
                      the
649 609
                      OpenAIRE Research Graph that are linked to the project.
650
                      The user can select the research products from the list and easily compile the continuous reporting
610
                      The user can select the research products from the list and easily compile the continuous
611
                      reporting
651 612
                      data of the project.
652 613
                    </li>
653 614
                  </ul>
654 615
                </div>
655
                <!--              </div>-->
656
                <!--              <div class="uk-width-expand">-->
657
                <!--                <img src="assets/graph-assets/about/architecture/indexing.svg">-->
658
                <!--              </div>-->
659 616
              </div>
660 617
            </li>
661 618
            <li>
662 619
              <div class="uk-text-small uk-margin-large-top">
663
                <!--              <div class="uk-width-3-5@m">-->
664 620
                <img
665 621
                    class="uk-width-2-5@m uk-align-right@m uk-margin-remove-adjacent tab-image uk-padding-large uk-padding-remove-top uk-padding-remove-horizontal"
666 622
                    src="assets/graph-assets/about/architecture/stats_analysis.svg" alt="Stats Analysis">
......
670 626
                    producing
671 627
                    the charts for funders, research initiative, infrastructures, and policy makers that you can see on
672 628
                    MONITOR.
673
                    Based on the information available on the graph, OpenAIRE provides a set of indicators for monitoring
629
                    Based on the information available on the graph, OpenAIRE provides a set of indicators for
630
                    monitoring
674 631
                    the funding and research impact and the uptake of Open Science publishing practices,
675 632
                    such as Open Access publishing of publications and datasets, availability of interlinks between
676 633
                    research
......
678 635
                    etc.
679 636
                  </p>
680 637
                </div>
681
                <!--              </div>-->
682
                <!--              <div class="uk-width-expand">-->
683
                <!--                <img src="assets/graph-assets/about/architecture/stats_analysis.svg">-->
684
                <!--              </div>-->
685 638
              </div>
686 639
            </li>
687 640
          </ul>
......
692 645
        <ul class="uk-text-small portal-circle">
693 646
          <li>
694 647
            <a href="https://aka.ms/msracad" target="_blank">Microsoft Academic Graph</a>
695
            which is made available under the ODC Attribution License.
648
            which is made available under the ODC Attribution License.<br>
696 649
            For more information on Microsoft Academic Graph please also read
697 650
            <a href="https://docs.microsoft.com/en-us/academic-services/graph/resources-faq" target="_blank">here</a>.
698 651
          </li>
......
700 653
            <a href="https://www.openaire.eu/aggregation-and-content-provision-workflows" target="_blank">https://www.openaire.eu/aggregation-and-content-provision-workflows</a>
701 654
          </li>
702 655
        </ul>
656
        <a class="portal-link uk-icon-link uk-text-small uk-text-bold uk-text-uppercase" routerLink="/resources/references">
657
          See all references <icon name="arrow_right" class="uk-margin-small-left"></icon>
658
        </a>
703 659
      </div>
704 660
    </div>
705 661
  </div>
706 662
  <div id="metrics" class="uk-container uk-container-large uk-section">
707 663
    <div class="uk-padding-small">
708
      <h2 class="uk-text-center">Data & Metrics</h2>
709
      <h4 class="uk-text-center uk-margin-medium-top portal-color">Coming soon...</h4>
710
      <!--        <div>-->
711
      <!--          <h3 class="uk-margin-medium-top portal-color">Data</h3>-->
712
      <!--          <div></div>-->
713
      <!--        </div>-->
714
      <!--        <div>-->
715
      <!--          <h3 class="uk-margin-medium-top portal-color">Metrics</h3>-->
716
      <!--          <div></div>-->
717
      <!--        </div>-->
664
      <h2 class="uk-text-center uk-margin-xlarge-bottom">Data & Metrics</h2>
665
      <numbers [backgroundClass]="null"></numbers>
718 666
    </div>
719 667
  </div>
720 668
  <div id="infrastructure" class="uk-container uk-section">
......
722 670
      <h2 class="uk-text-center">Infrastructure</h2>
723 671
      <div>
724 672
        <div class="uk-flex uk-flex-center uk-grid uk-grid-stack">
725
<!--          <div>-->
726
            <p class="uk-width-4-5@m uk-padding-small">
727
              The OpenAIRE Research Graph is operated and maintained at the <a
673
          <p class="uk-width-4-5@m uk-padding-small">
674
            The OpenAIRE Research Graph is operated and maintained at the <a
728 675
              href="https://icm.edu.pl/en/centre-of-technology/" target="_blank">ICM cutting-edge Technology centre</a>
729
              with the facilities and staff guaranteeing robust operation of the whole system.
730
              Okeanos SuperComputer hosting the graph consists of 26016 cores in total providing 1082 Tflops/s.
731
              Whole setup is energy efficient with 1.554 Gflops/Watts Power Efficiency resulting in 160th place on the "Top500 by energy-eficiency" list (as of 2019).
732
            </p>
733
            <img class="infrastructure-image uk-margin-top uk-margin-bottom" src="assets/graph-assets/about/infrastructure.png">
734
            <p class="uk-width-4-5@m uk-padding-small">
735
              ICM supports the continuous operation of the infrastructure including data aggregation, deduplication, inference and provision ensuring seamless 24/7 system uptime and availability.
736
              System administration activities cover hardware maintenance and provisioning of the new computational resources, providing High Availability solutions to address resilience to failures by service-level redundancy and Load Balancing to distribute workloads uniformly across servers.
737
              The most crucial parts of the persisted graph are covered with backups along with well defined restore procedures.
738
              All the monitoring activities rely on an aggregated system-level monitoring accessible via various dashboards giving the better overview of system stability and potential requirements for system elements extension.
739
              System level monitoring is supplemented with monitoring availability of all the publicly accessible endpoints.
740
              Hence, the offer of the public API of OpenAIRE to third parties, is of high-standards.
741
            </p>
742
            <p class="uk-width-4-5@m uk-padding-small">
743
              All the maintenance operations undertaken by experienced system administrators are founded on well established routines and emergency maintenance procedures.
744
            </p>
745

  
746
<!--            The OpenAIRE graph operates based on a vast variety of hardware and software. As of December 2019, the-->
747
<!--            hardware infrastructure is the following:-->
748
<!--          </p>-->
749
<!--          </div>-->
676
            with the facilities and staff guaranteeing robust operation of the whole system.
677
            Okeanos SuperComputer hosting the graph consists of 26016 cores in total providing 1082 Tflops/s.
678
            Whole setup is energy efficient with 1.554 Gflops/Watts Power Efficiency resulting in 160th place on the
679
            "Top500 by energy-eficiency" list (as of 2019).
680
          </p>
681
          <img class="infrastructure-image uk-margin-top uk-margin-bottom"
682
               src="assets/graph-assets/about/infrastructure.png">
683
          <p class="uk-width-4-5@m uk-padding-small">
684
            ICM supports the continuous operation of the infrastructure including data aggregation, deduplication,
685
            inference and provision ensuring seamless 24/7 system uptime and availability.
686
            System administration activities cover hardware maintenance and provisioning of the new computational
687
            resources, providing High Availability solutions to address resilience to failures by service-level
688
            redundancy and Load Balancing to distribute workloads uniformly across servers.
689
            The most crucial parts of the persisted graph are covered with backups along with well defined restore
690
            procedures.
691
            All the monitoring activities rely on an aggregated system-level monitoring accessible via various
692
            dashboards giving the better overview of system stability and potential requirements for system elements
693
            extension.
694
            System level monitoring is supplemented with monitoring availability of all the publicly accessible
695
            endpoints.
696
            Hence, the offer of the public API of OpenAIRE to third parties, is of high-standards.
697
          </p>
698
          <p class="uk-width-4-5@m uk-padding-small">
699
            All the maintenance operations undertaken by experienced system administrators are founded on well
700
            established routines and emergency maintenance procedures.
701
          </p>
750 702
        </div>
751 703
      </div>
752 704
    </div>
......
756 708
      <h2 class="uk-text-center">Team</h2>
757 709
      <div>
758 710
        <div class="uk-margin-bottom">
759
<!--          <div class="uk-flex uk-flex-middle uk-grid" uk-grid="">-->
760
<!--            <div class="uk-text-center uk-width-1-1@s uk-width-1-3@m uk-first-column">-->
761
<!--              <img src="assets/graph-assets/about/team.svg">-->
762
<!--            </div>-->
763

  
764 711
          <img class="uk-align-center uk-align-left@m uk-margin-remove-adjacent"
765 712
               src="assets/graph-assets/about/team.svg" alt="Team">
766 713

  
......
768 715
            <div class="uk-margin-medium-bottom">
769 716
              Key team members contributing to the Research Graph
770 717
            </div>
771
            <div>
772
              <a class="uk-button portal-button" target="_blank" href="https://www.openaire.eu/research-graph-team">
718
            <div><a class="uk-button portal-button" routerLink="./team">
773 719
                Meet the team
774 720
                <icon name="arrow_right" ratio="0.8" class="space"></icon>
775 721
              </a>
776 722
            </div>
777 723
          </div>
778
<!--          </div>-->
779 724
        </div>
780 725
      </div>
781 726
    </div>
modules/uoa-graph-portal/trunk/src/app/about/team.component.css
1
.uk-card .uk-card-flip-inner .front,
2
.uk-card .uk-card-flip-inner .back {
3
  border-radius: 5px;
4
  box-shadow: 0 2px 5px #0000001a;
5
  border: 1px solid #E0E0E0;
6
  font-size: 14px;
7
  font-family: "Roboto", sans-serif;
8
  line-height: 19px;
9
  color: rgba(26, 26, 26, 0.8);
10
}
11

  
12
.uk-card:hover .uk-card-flip-inner .front,
13
.uk-card:hover .uk-card-flip-inner .back {
14
  box-shadow: 0 6px 15px #0000001A;
15
}
16

  
17
.uk-card .front img,
18
.uk-card .back img {
19
  width: 150px;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff