Skip to content

Commit ae13c59

Browse files
authored
Merge branch 'dev' into embeddings
2 parents 8551172 + 762b5b0 commit ae13c59

File tree

3 files changed

+88
-27
lines changed

3 files changed

+88
-27
lines changed

ebi_ontologies.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
{
22
"ontologies": [
3+
{
4+
"id": "mondo",
5+
"ontology_purl": "https://purl.obolibrary.org/obo/mondo/mondo-international.owl"
6+
},
37
{
48
"id": "evorao",
59
"ontology_purl": "https://raw.githubusercontent.com/EVORA-project/evora-ontology/refs/heads/main/models/owl/evora_ontology.owl.ttl"

frontend/src/model/Entity.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,53 @@ export default abstract class Entity extends Thing {
240240
return result;
241241
}
242242

243+
getDescriptionsFromProperties(): { property: string; descriptions: Reified<any>[] }[] {
244+
const result: { property: string; descriptions: Reified<any>[] }[] = [];
245+
// Check if 'definitionProperty' exists in 'this.properties'
246+
if (!this.properties || !this.properties.hasOwnProperty("definitionProperty")) {
247+
return result; // Return empty array if 'definitionProperty' doesn't exist
248+
}
249+
250+
const definitionProperties = this.properties["definitionProperty"];
251+
const definitionPropsArray = Array.isArray(definitionProperties)
252+
? definitionProperties
253+
: [definitionProperties];
254+
255+
definitionPropsArray.forEach((definitionProperty: string) => {
256+
if (this.properties.hasOwnProperty(definitionProperty)) {
257+
const descriptions = this.properties[definitionProperty];
258+
if (descriptions) {
259+
const reifiedDescriptions = Reified.fromJson(
260+
Array.isArray(descriptions) ? descriptions : [descriptions]
261+
);
262+
263+
if (reifiedDescriptions.length > 0) {
264+
// Get property short name for display
265+
const propertyName = this.getPropertyShortName(definitionProperty);
266+
result.push({
267+
property: propertyName,
268+
descriptions: reifiedDescriptions
269+
});
270+
}
271+
}
272+
}
273+
});
274+
275+
return result;
276+
}
277+
278+
private getPropertyShortName(propertyIri: string): string {
279+
// Special case for IAO_0000115
280+
if (propertyIri === "http://purl.obolibrary.org/obo/IAO_0000115") {
281+
return "Definition";
282+
}
283+
284+
// Extract the last part of the IRI for display
285+
const parts = propertyIri.split(/[/#]/);
286+
const lastPart = parts[parts.length - 1];
287+
288+
return lastPart
289+
.replace(/^./, str => str.toUpperCase()) // Capitalize first letter
290+
.trim();
291+
}
243292
}

frontend/src/pages/ontologies/entities/entityPageSections/EntityDescriptionSection.tsx

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,41 @@ export default function EntityDescriptionSection({
1212
entity: Entity;
1313
linkedEntities: LinkedEntities;
1414
}) {
15-
let desc = entity.getDescriptionAsArray();
15+
const propertyDescriptions = entity.getDescriptionsFromProperties();
16+
1617
return (
17-
<div className="mb-2">
18-
{desc.map((definition: Reified<any>, i: number) => {
19-
return (
20-
<p
21-
key={definition.value.toString().substring(0, 10) + randomString()}
22-
className="pb-3"
23-
>
24-
<span>
25-
{addLinksToText(
26-
definition.value,
27-
linkedEntities,
28-
entity.getOntologyId(),
29-
entity,
30-
entity.getTypePlural()
31-
)}
32-
{definition.hasMetadata() ? (
33-
<MetadataTooltip
34-
metadata={definition.getMetadata()}
35-
linkedEntities={linkedEntities}
36-
/>
37-
) : null}
38-
</span>
39-
</p>
40-
);
41-
})}
42-
</div>
18+
<div className="mb-2">
19+
{propertyDescriptions.length > 0 ? (
20+
propertyDescriptions.map((propertyGroup, groupIndex) => (
21+
<div key={`group-${groupIndex}`} className="mb-4">
22+
<h4 className="font-semibold text-gray-700 mb-2">
23+
{propertyGroup.property}:
24+
</h4>
25+
{propertyGroup.descriptions.map((definition: Reified<any>, i: number) => (
26+
<p
27+
key={definition.value.toString().substring(0, 10) + randomString()}
28+
className="pb-3 pl-4"
29+
>
30+
<span>
31+
{addLinksToText(
32+
definition.value,
33+
linkedEntities,
34+
entity.getOntologyId(),
35+
entity,
36+
entity.getTypePlural()
37+
)}
38+
{definition.hasMetadata() ? (
39+
<MetadataTooltip
40+
metadata={definition.getMetadata()}
41+
linkedEntities={linkedEntities}
42+
/>
43+
) : null}
44+
</span>
45+
</p>
46+
))}
47+
</div>
48+
))
49+
) : null }
50+
</div>
4351
);
4452
}

0 commit comments

Comments
 (0)