-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathindex.html
More file actions
443 lines (416 loc) · 20.7 KB
/
Copy pathindex.html
File metadata and controls
443 lines (416 loc) · 20.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
---
title: OntoPortal
description: Ontology Repositories or Semantic Artefact Catalogues with the OntoPortal Technology
---
<section class="hero">
<div class="text-container">
<h1 class="editable"><strong>OntoPortal</strong>, a generic technology to build ontology repositories or semantic artefact catalogues</h1>
<p class="subtext editable">The most advanced and rich technology for ontology services!</p>
<div class="cta button alt">
<a href="{{ site.virtual_appliance_url }}">Get your own OntoPortal</a>
</div>
<div class="cta button alt">
<a href="{{ site.demo_url }}">See a demo of OntoPortal</a>
</div>
<div>
<img src="{{ site.baseurl }}/images/ontoportal_home.png" alt="Screenshot" class="screenshot editable" />
</div>
</div>
</section>
<div class="content">
<section class="testimonial">
<div class="container flex" style="flex-wrap: wrap; overflow-wrap: anywhere">
<div class="text editable" style=" display: flex; justify-content: center; flex-direction: column; align-items: center;">
<h2><strong>Cite us</strong></h2>
<div style="background: #f4f8ff; border-left: 4px solid #1a6aaa; padding: 1.2em 1.6em; border-radius: 4px; max-width: 780px; margin: 1em auto; text-align: left;">
<p style="margin: 0; line-height: 1.7;">
Jonquet C., Graybeal J., Bouazzouni S., Dorf M., Fiore N., et al. (2023).<br>
<strong>Ontology Repositories and Semantic Artefact Catalogues with the OntoPortal Technology.</strong><br>
In: <em>Proceedings of the 22nd International Semantic Web Conference (ISWC 2023)</em>, Athens, Greece, pp. 38–58.<br>
<span style="font-size: 0.9em;">
<a href="https://hal.science/hal-04088537" target="_blank">Open access (HAL)</a> ·
DOI: <a href="https://doi.org/10.1007/978-3-031-47243-5_3" target="_blank">10.1007/978-3-031-47243-5_3</a>
</span>
</p>
</div>
<p class="subtext editable"> You can also discover OntoPortal related documents on our <a href="https://zenodo.org/communities/ontoportal" target="_blank"> Zenodo Community </a>and/or <a href="https://www.zotero.org/groups/6228656/ontoportal_alliance_biblio" target="_blank"> Zotero Collection </a>.</p>
</div>
</div>
</section>
<section>
<div class="container flex">
<div class="text editable">
<h2>Save and find <strong>semantic artefacts</strong></h2>
<p>The primary mission of an OntoPortal installation is to host and serve ontologies and semantic artefacts. The portals accept resources in multiple knowledge representation languages: OWL, RDFS, SKOS, OBO and UMLS-RRF.</p>
<p>Ontologies are semantically described with rich metadata (partially extracted from the source files), and a browsing user interface allows to quickly identify, with faceted search, the ontologies of interest based on their metadata.</p>
</div>
<div class="image">
<img src="{{ site.baseurl }}/images/repository_browser.png" alt="Screenshot" class="screenshot editable" />
</div>
</div>
</section>
<section>
<div class="container flex">
<div class="text editable">
<h2><strong>Browse the content</strong> of semantic artefacts</h2>
<p>OntoPortal lets users visualize a class/concept or property within its hierarchy, as well as see related information for this entity (as relations included in the source file). </p>
</div>
<div class="image">
<img src="{{ site.baseurl }}/images/content_browse.png" alt="Screenshot" class="screenshot editable" />
</div>
</div>
</section>
<section>
<div class="container flex">
<div class="text editable">
<h2> <strong>Search</strong> for terms</h2>
<p>All the semantic artefacts content hosted in an OntoPortal is indexed and can easily be retrieved.</p>
</div>
<div class="image">
<img src="{{ site.baseurl }}/images/repository_search.png" alt="Screenshot" class="screenshot editable" />
</div>
</div>
</section>
<section>
<div class="container">
<div class="text editable flex" style="justify-content: center; flex-direction: column; align-items: center;">
<h2> Much more available as <strong>standard OntoPortal services...</strong></h2>
</div>
<ul class="staff">
<li>
<div class="service-circle square-image">Custom hosting</div>
<div class="name"></div>
<div class="position">Organize public/private ontologies, group/categorize them and offers custom slices.</div>
</li>
<li>
<div class="service-circle square-image">Versioning</div>
<div class="name"></div>
<div class="position">Store all ontology versions, whether manually submitted or automatically pulled. Get diff between versions.</div>
</li>
<li>
<div class="service-circle square-image">Widgets</div>
<div class="name"></div>
<div class="position">Easily embed Web widgets in external web applications to facilitate the reuse/visualization of ontology entities.</div>
</li>
<li>
<div class="service-circle square-image">Mappings</div>
<div class="name"></div>
<div class="position">Store, retrieve and explore mappings between ontology terms. Get lexical overlap of an ontology with all the other ones in a portal.</div>
</li>
<li>
<div class="service-circle square-image">Community</div>
<div class="name"></div>
<div class="position">Get notified from feedback as notes, change requests and record projects using ontologies.</div>
</li>
<li>
<div class="service-circle square-image">Annotator</div>
<div class="name"></div>
<div class="position">Identify semantic artefact classes or concepts inside any raw text.</div>
</li>
<li>
<div class="service-circle square-image">Recommender</div>
<div class="name"></div>
<div class="position">Get ontology recommendations for a provided text or keyword list.</div>
</li>
<li>
<div class="service-circle square-image">Automated access</div>
<div class="name"></div>
<div class="position">Access all content and services with two different endpoints: a REST web service API that returns JSON-LD and a SPARQL endpoint.</div>
</li>
<li>
<div class="service-circle square-image">Standard ontology metadata model</div>
<div class="name"></div>
<div class="position">Standardized and harmonized metadata model based on MOD1.4 to better support descriptions of ontologies and their relations.</div>
</li>
<li>
<div class="service-circle square-image">Extended SKOS support</div>
<div class="name"></div>
<div class="position">Full support of SKOS and innovative browsing approaches to discover and navigate concepts in SKOS thesauri that make extensive use of scheme and collections.</div>
</li>
<li>
<div class="service-circle square-image">Multilingual support</div>
<div class="name"></div>
<div class="position">Full support (search and browsing) of multilingual content within ontologies.</div>
</li>
<li>
<div class="service-circle square-image">Generic Triple Store Backend</div>
<div class="name"></div>
<div class="position">Store and query ontology data through standards RDF triple store backend (4store, AllegroGraph, Virtuoso, GraphDB) for maximum scalability and interoperability.</div>
</li>
</ul>
</div>
</section>
<section>
<div class="container">
<div class="text editable flex" style="justify-content: center; flex-direction: column; align-items: center;">
<h2> And even more <strong>additional features and services</strong> developed by the Alliance...</h2>
</div>
<ul class="staff">
<li>
<div class="service-circle square-image">Enhanced mapping features</div>
<div class="name"></div>
<div class="position">New visualization and more flexible mapping storage, import mappings in bulk or extract SKOS mappings explicitly defined in semantic artefact source files.</div>
</li>
<li>
<div class="service-circle square-image">Enhanced semantic annotation workflow</div>
<div class="name"></div>
<div class="position">Natural language-based enhancements of the Annotator with scoring methods context detection (e.g., negation, temporality).</div>
</li>
<li>
<div class="service-circle square-image">Semantic artefact FAIRness assessment</div>
<div class="name"></div>
<div class="position">Get FAIR score for each semantic artefact from 61 questions implemented from the Ontology FAIRness Evaluation (O’FAIRe) methodology.</div>
</li>
<li>
<div class="service-circle square-image">Assigning DOIs</div>
<div class="name"></div>
<div class="position">Request a Digital Object Identifier (DOI) for resources hosted in the portal using Datacite services.</div>
</li>
<li>
<div class="service-circle square-image">New user interfaces</div>
<div class="name"></div>
<div class="position">Easy-to-use modern and responsive user interfaces.</div>
</li>
<li>
<div class="service-circle square-image">URIs dereferencing</div>
<div class="name"></div>
<div class="position">Easy-to-use infrastructure supporting ontology URI dereferencing (resolution and content negotiation).</div>
</li>
<li>
<div class="service-circle square-image">Agents profiling</div>
<div class="name"></div>
<div class="position">Search, browse, and manage agents (persons and organizations) associated to ontologies and see their complete profiles.</div>
</li>
<li>
<div class="service-circle square-image">Related projects</div>
<div class="name"></div>
<div class="position">Revamped ontology related project functionalities including connectors to funded project databases.</div>
</li>
<li>
<div class="service-circle square-image">MOD-API support</div>
<div class="name"></div>
<div class="position">Full (level 4) MOD-API (v1) implementation for enhanced interoperability with other Semantic Artefact Catalogues.</div>
</li>
<li>
<div class="service-circle square-image">Federation</div>
<div class="name"></div>
<div class="position">Harmonized search and discoveries of ontologies accross multiple federated OntoPortals.</div>
</li>
<li>
<div class="service-circle square-image">Change requests</div>
<div class="name"></div>
<div class="position">Suggest ontology content changes (new terms, synonyms, definitions) directly from OntoPortal to GitHub.</div>
</li>
<li>
<div class="service-circle square-image">Authentication & SSO</div>
<div class="name"></div>
<div class="position">Integrate with LDAP or OAuth2 for unified access management.</div>
</li>
</ul>
</div>
</section>
<section class="testimonial">
<div class="container flex" style="flex-wrap: wrap; overflow-wrap: anywhere">
<div class="text editable" style=" display: flex; justify-content: center; flex-direction: column; align-items: center;">
<h2>What Users Say</h2>
</div>
<div class="my-slider">
<div class="testimonial-block">
<blockquote>
<p class="editable">I rely on BioPortal for easy access to SNOMED and a number of other terminologies, particularly for when I just want to check the existence of specific terms. I love having a one-stop shop to find just about any ontology I might need.</p>
<p class="editable author">Jessie Tenenbaum - Duke University</p>
</blockquote>
</div>
<div class="testimonial-block">
<blockquote>
<p class="editable">The TSCF lab from INRAE uses AgroPortal to share and promote its RDF semantic resources related to agriculture: the French Crop Usage Thesaurus, BBCH-based Plant Phenological Description Ontology (PPDO), and more.... We love the FAIRness evaluation service, O'FAIRe.</p>
<p class="editable author">Catherine Roussey - INRAE, MISTEA lab</p>
</blockquote>
</div>
<div class="testimonial-block">
<blockquote>
<p class="editable">I’m using BioPortal to browse and search different ontologies and vocabularies such as NDF-RT and SNOMED CT. I find codes for terms and restrictions on terms and I then copy them into clinical guideline representations so that I can use standard terminologies.</p>
<p class="editable author">Mor Peleg - University of Haifa</p>
</blockquote>
</div>
<div class="testimonial-block">
<blockquote>
<p class="editable">The BioPortal is a referential and invaluable ressource for our research group. We use the BioPortal daily to browse medical ontologies, evaluate how they cover clinical data and could be used to structure and normalise them. </p>
<p class="editable author">Adrien Coulet - Inria Paris, HeKA team</p>
</blockquote>
</div>
<div class="testimonial-block">
<blockquote>
<p class="editable">I am using AgroPortal to get a public access, regularly updated, to the LEXEAU ontology a bilingual water lexicon (...) which aim is a better intercomprehension of the water issues by the public and private stakeholders. The integration in AgroPortal and the alignements of LEXEAU with other ontologies facilitate the international dissemination and further realization of the project. </p>
<p class="editable author">Jean-Louis Janin, French Académie de l'Eau</p>
</blockquote>
</div>
</div>
<script >
var slider = tns({
container: '.my-slider',
items: 1, // Set the number of items to show at once
slideBy: 'page', // Slide by page instead of by item
nav: false, // Hide the default pagination
autoplay: true,
speed: 750,
autoplayButtonOutput: false,
controlsPosition: 'bottom'
});
</script>
</div>
</section>
<section>
<div class="container flex" style="flex-direction: column; justify-content: center" >
<div class="text editable flex" style="justify-content: center; flex-direction: column; align-items: center; margin-top: 10px">
<h2>Be part of a <strong>community</strong></h2>
</div>
<style>
.portal-badge {
display: inline-block;
font-size: 0.68em;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
padding: 2px 7px;
border-radius: 4px;
vertical-align: middle;
margin-left: 5px;
}
.portal-badge-retired { background: #f3dede; color: #a33; }
.portal-badge-coming { background: #ddeeff; color: #1a6aaa; }
.portal-coming-box {
height: 100px;
background-color: #d8d8d8;
display: flex;
align-items: center;
justify-content: center;
width: 200px;
border-radius: 200px;
margin: 25px auto 0px;
}
.portal-coming-box span {
color: #888;
font-size: 0.85em;
font-style: italic;
}
</style>
<ul class="staff">
{% for portal in site.data.portals %}
<li>
{% if portal.status == "coming" %}
<div class="portal-coming-box"><span>coming soon</span></div>
<div class="name">{{ portal.name }} <span class="portal-badge portal-badge-coming">coming</span></div>
{% elsif portal.status == "retired" %}
<div style="height: 100px;background-color:{{portal.color}}" class="square-image"><img src="{% include relative-src.html src=portal.logo %}" alt="{{ portal.name }}" style="object-fit: contain;width: 200px; height: 100px; opacity: 0.7;"/></div>
<div class="name"><a target="_blank" href="{{ portal.link }}" style="color: black">{{ portal.name }}</a> <span class="portal-badge portal-badge-retired">retired</span></div>
{% else %}
<div style="height: 100px;background-color:{{portal.color}}" class="square-image"><img src="{% include relative-src.html src=portal.logo %}" alt="{{ portal.name }}" style="object-fit: contain;width: 200px; height: 100px"/></div>
<div class="name"><a target="_blank" href="{{ portal.link }}" style="color: black">{{ portal.name }}</a></div>
{% endif %}
<div class="position">{{ portal.description }}</div>
</li>
{% endfor %}
</ul>
<div class="button"><a href="{{ site.baseurl }}/about">Get more information and join the Alliance</a></div>
</div>
</section>
<section style="display: flex; justify-content: center">
<div style="width: 60%; margin: 10px;">
<div style="display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 16px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 530" style="width:24px;height:24px;fill:#0085ff"><path d="m135.72 44.03c66.496 49.921 138.02 151.14 164.28 205.46 26.262-54.316 97.782-155.54 164.28-205.46 47.98-36.021 125.72-63.892 125.72 24.795 0 17.712-10.155 148.79-16.111 170.07-20.703 73.984-96.144 92.854-163.25 81.433 117.3 19.964 147.14 86.092 82.697 152.22-122.39 125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937 0.51669-3.7077 7.8964-13.714 40.255-67.233 197.36-189.63 71.766-64.444-66.128-34.605-132.26 82.697-152.22-67.108 11.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07 0-88.687 77.742-60.816 125.72-24.795z"/></svg>
<h3 style="margin:0; font-size: 1.1em;">OntoPortal on Bluesky</h3>
</div>
<div id="bsky-feed" style="display: flex; flex-direction: column; gap: 12px;"></div>
<div style="text-align: center; margin-top: 16px;">
<a href="https://bsky.app/profile/ontoportal.bsky.social" target="_blank" style="color: #0085ff; font-size: 0.9em;">View profile on Bluesky →</a>
</div>
</div>
<script>
fetch('https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=ontoportal.bsky.social&limit=5')
.then(r => r.json())
.then(data => {
const feed = document.getElementById('bsky-feed');
(data.feed || []).forEach(item => {
const post = item.post;
const text = post.record.text;
const date = new Date(post.record.createdAt).toLocaleDateString('en-GB', {day: 'numeric', month: 'short', year: 'numeric'});
const uri = post.uri.replace('at://did:plc:', 'https://bsky.app/profile/').replace('/app.bsky.feed.post/', '/post/');
const atUri = post.uri;
const rkey = atUri.split('/').pop();
const postUrl = `https://bsky.app/profile/ontoportal.bsky.social/post/${rkey}`;
const card = document.createElement('div');
card.style.cssText = 'border:1px solid #e0e0e0; border-radius:8px; padding:14px 16px; background:#fff;';
card.innerHTML = `
<div style="font-size:0.92em; line-height:1.5; color:#1a1a1a;">${text.replace(/\n/g, '<br>')}</div>
<div style="margin-top:8px; font-size:0.8em; color:#888;">
<a href="${postUrl}" target="_blank" style="color:#0085ff; text-decoration:none;">${date}</a>
</div>`;
feed.appendChild(card);
});
if (!data.feed || data.feed.length === 0) {
feed.innerHTML = '<p style="text-align:center;color:#888;">No posts yet.</p>';
}
})
.catch(() => {
document.getElementById('bsky-feed').innerHTML = '<p style="text-align:center;color:#888;">Unable to load feed.</p>';
});
</script>
</section>
<section class="bottom-cta">
<div class="container flex sponsorsFooter" style="flex-direction: column; justify-content: center" >
<div class="text editable flex" style="justify-content: center; flex-direction: column; align-items: center; margin-top: 10px">
<h2><span class="sponsorsFooter-Title">Our</span> <strong>sponsors</strong></h2>
</div>
<ul class="flex">
{% for sponsor in site.sponsors %}
<li data-group="{{ sponsor.portals }}">
<a href="{{sponsor.link}}" target="_blank"><img src="{{ sponsor.logo }}" alt="{{sponsor.acronym}} image"></a>
</li>
{% endfor %}
</ul>
<script>
const ul = document.querySelector(".sponsorsFooter ul");
const title = document.querySelector(".sponsorsFooter .sponsorsFooter-Title");
ul.querySelectorAll('li').forEach(li => {
const portals = li.getAttribute("data-group").toString().trim().split(',')
li.addEventListener("mouseenter", () => {
showPortals(ul,portals)
title.innerHTML = getTitle(portals)
})
li.addEventListener("mouseleave", () => {
title.innerHTML = "Our";
resetPortals(ul)
})
})
function getTitle(portals){
const length = portals.length
if (length === 1) {
return portals[0]
} else if (length === 2) {
return portals.join(' and ');
} else {
const last = portals.slice(-1)
const rest = portals.slice(0, - 1)
return rest.join(', ') + ', and ' + last
}
}
function showPortals(container,portals){
container.querySelectorAll('li').forEach(li => {
const currentPortals = li.getAttribute("data-group").toString().trim().split(',')
if(portals.every(item => currentPortals.includes(item))){
li.classList.add("hover")
container.classList.add("enter")
}
})
}
function resetPortals(container){
container.classList.remove("enter")
container.querySelectorAll('li').forEach(li => {
li.classList.remove("hover")
})
}
</script>
</div>
</section>
</div>