Skip to content

Commit da4c9f8

Browse files
authored
Merge pull request #778 from EBISPOT/fix-cardinality-issue
Update cardinality handling
2 parents b85e4c1 + 05b6297 commit da4c9f8

File tree

2 files changed

+46
-8
lines changed

2 files changed

+46
-8
lines changed

frontend/src/components/ClassExpression.tsx

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ export default function ClassExpression({
2828

2929
const types = asArray(expr['type'])
3030

31-
if(types && types.indexOf('datatype') !== -1) {
31+
function getCardinality(value) {
32+
if (value === null || value === undefined) {
33+
return [];
34+
} else if (Array.isArray(value)) {
35+
return value;
36+
} else {
37+
return [value];
38+
}
39+
}
40+
41+
if(types && types.indexOf('datatype') !== -1) {
3242
// rdfs:Datatype
3343
let equivClass = expr['http://www.w3.org/2002/07/owl#equivalentClass'];
3444
if(equivClass) {
@@ -150,14 +160,19 @@ export default function ClassExpression({
150160
</span>,
151161
];
152162

153-
for (const subExpr of oneOf) {
163+
for (let subExpr of oneOf) {
154164
if (nodes.length > 1) {
155165
nodes.push(
156166
<span key={randomString()} className="text-neutral-default">
157167
&#44;&nbsp;
158168
</span>
159169
);
160170
}
171+
172+
if (typeof subExpr === "number") {
173+
subExpr = subExpr.toString();
174+
}
175+
161176
nodes.push(
162177
<ClassExpression
163178
key={randomString()}
@@ -301,9 +316,12 @@ export default function ClassExpression({
301316
);
302317
}
303318

304-
const minCardinality = asArray(
319+
let minCardinality = getCardinality(
305320
expr["http://www.w3.org/2002/07/owl#minCardinality"]
306321
)[0];
322+
if(typeof minCardinality === 'number') {
323+
minCardinality = minCardinality.toString()
324+
}
307325
if (minCardinality) {
308326
return (
309327
<span>
@@ -314,9 +332,12 @@ export default function ClassExpression({
314332
);
315333
}
316334

317-
let maxCardinality = asArray(
335+
let maxCardinality = getCardinality(
318336
expr["http://www.w3.org/2002/07/owl#maxCardinality"]
319337
)[0];
338+
if(typeof maxCardinality === 'number') {
339+
maxCardinality = maxCardinality.toString()
340+
}
320341
if (maxCardinality) {
321342
return (
322343
<span>
@@ -326,9 +347,12 @@ export default function ClassExpression({
326347
</span>
327348
);
328349
}
329-
let exactCardinality = asArray(
350+
let exactCardinality = getCardinality(
330351
expr["http://www.w3.org/2002/07/owl#cardinality"]
331352
)[0];
353+
if(typeof exactCardinality === 'number') {
354+
exactCardinality = exactCardinality.toString()
355+
}
332356
if (exactCardinality) {
333357
return (
334358
<span>

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ export default function IndividualPropertyAssertionsSection({
9494
linkedEntities={linkedEntities}
9595
/>
9696
&thinsp;
97-
{
98-
<span>
97+
{typeof v === "string" && v.includes("http") ? (
98+
<span>
9999
<span className="pr-1 text-sm" style={{ color: "gray" }}>
100100
&#9656;
101101
</span>
@@ -107,7 +107,21 @@ export default function IndividualPropertyAssertionsSection({
107107
linkedEntities={linkedEntities}
108108
/>
109109
</span>
110-
}
110+
) : (
111+
<Tooltip
112+
title={
113+
typeof v === "string"
114+
? v
115+
: typeof v === "object" && !Array.isArray(v) && v.value
116+
? JSON.stringify(v.value)
117+
: JSON.stringify(v)
118+
}
119+
placement="top"
120+
arrow
121+
>
122+
<i className="icon icon-common icon-info text-neutral-default text-sm ml-1" />
123+
</Tooltip>
124+
)}
111125
</span>
112126
);
113127
}

0 commit comments

Comments
 (0)