@igea/oac_backend 1.0.95 โ 1.0.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/controllers/fuseki.js +17 -2
- package/src/models/editLocks.js +41 -2
- package/src/ontology/schema_editing.ttl +1 -1
- package/src/ontology/schema_fast_1.ttl +80 -46
- package/src/ontology/schema_fast_2.ttl +28 -27
- package/src/ontology/schema_fast_3.ttl +66 -65
- package/src/ontology/schema_fast_4.ttl +45 -44
- package/src/ontology/schema_full_search.ttl +438 -439
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ const Fuseki = require('../models/fuseki');
|
|
|
12
12
|
const Attachments = require('../models/attachments');
|
|
13
13
|
const { Parser, transformMode } = require('../models/vocabolaries/parser');
|
|
14
14
|
const CacheVocabularies = require('../models/vocabolaries/cache');
|
|
15
|
+
const EditLocks = require('../models/editLocks');
|
|
15
16
|
const VocabParser = Parser.GET_INSTANCE();
|
|
16
17
|
|
|
17
18
|
//---------------------------------------------------------------
|
|
@@ -278,8 +279,22 @@ router.get('/get-vocabolary-terms/:key', (req, res) => {
|
|
|
278
279
|
}).then(response => {
|
|
279
280
|
res.setHeader('Content-Type', response.headers['content-type']);
|
|
280
281
|
res.header('Access-Control-Allow-Origin', '*');
|
|
281
|
-
|
|
282
|
-
|
|
282
|
+
const client_uuid = crypto.randomUUID();
|
|
283
|
+
const table = 'vocabulary-cache'
|
|
284
|
+
EditLocks.lockWithRetry(table, key, client_uuid).then( async (success) =>{
|
|
285
|
+
try{
|
|
286
|
+
if(success){
|
|
287
|
+
CacheVocabularies.set(key, response.data); // salva come stringa
|
|
288
|
+
await EditLocks.delete(table, key, client_uuid)
|
|
289
|
+
}
|
|
290
|
+
}catch(ex){
|
|
291
|
+
console.log(ex)
|
|
292
|
+
}
|
|
293
|
+
res.send(response.data);
|
|
294
|
+
}).catch((e)=>{
|
|
295
|
+
console.log(e)
|
|
296
|
+
res.send(response.data);
|
|
297
|
+
})
|
|
283
298
|
}).catch(err => {
|
|
284
299
|
res.status(500).json({
|
|
285
300
|
success: false,
|
package/src/models/editLocks.js
CHANGED
|
@@ -5,11 +5,49 @@ const expiration_seconds = 180 // 3 minutes
|
|
|
5
5
|
|
|
6
6
|
class EditLocks {
|
|
7
7
|
|
|
8
|
-
static
|
|
8
|
+
static sleep(delay_ms=100) {
|
|
9
|
+
return new Promise(resolve => setTimeout(resolve, delay_ms));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static lockWithRetry(
|
|
13
|
+
table_name,
|
|
14
|
+
row_id,
|
|
15
|
+
client_uuid,
|
|
16
|
+
{
|
|
17
|
+
timeoutMs = 5000, // timeout totale
|
|
18
|
+
expirationMs = 10000, // expiration of the lock
|
|
19
|
+
retryDelayMs = 100 // delay minimo tra i tentativi
|
|
20
|
+
} = {}
|
|
21
|
+
) {
|
|
22
|
+
return new Promise(async (resolve, reject) => {
|
|
23
|
+
const startTs = (new Date).getTime();
|
|
24
|
+
let continueLocking = true;
|
|
25
|
+
const exp_sec = Math.ceil(expirationMs / 1000)
|
|
26
|
+
while (continueLocking) {
|
|
27
|
+
try {
|
|
28
|
+
console.log("Lock with retry for " + table_name + "@" + row_id)
|
|
29
|
+
const acquired = await EditLocks.lock(table_name, row_id, client_uuid, exp_sec);
|
|
30
|
+
if (acquired === true) {
|
|
31
|
+
resolve(true); // ๐ lock acquisito
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.log(err)
|
|
36
|
+
}
|
|
37
|
+
await EditLocks.sleep(retryDelayMs);
|
|
38
|
+
const curTs = (new Date).getTime();
|
|
39
|
+
continueLocking = (curTs > startTs + timeoutMs)
|
|
40
|
+
}
|
|
41
|
+
// โ timeout raggiunto
|
|
42
|
+
resolve(false)
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static lock(table_name, row_id, client_uuid, exp_sec = expiration_seconds){
|
|
9
47
|
return new Promise(async (resolve, reject) => {
|
|
10
48
|
try{
|
|
11
49
|
let start_ts = Math.ceil(new Date().getTime()/1000)
|
|
12
|
-
let end_ts = start_ts +
|
|
50
|
+
let end_ts = start_ts + exp_sec
|
|
13
51
|
let sql = `INSERT INTO ${table}(
|
|
14
52
|
table_name, row_id, client_uuid,
|
|
15
53
|
locked_at_ts, expires_at_ts
|
|
@@ -63,6 +101,7 @@ class EditLocks {
|
|
|
63
101
|
|
|
64
102
|
static delete(table_name, row_id, client_uuid){
|
|
65
103
|
return new Promise(async (resolve, reject) => {
|
|
104
|
+
console.log("Unlock for " + table_name + "@" + row_id)
|
|
66
105
|
try {
|
|
67
106
|
await db(table).where(
|
|
68
107
|
{table_name, row_id, client_uuid}
|
|
@@ -1150,7 +1150,7 @@ ex:E39Actor04Shape # AUTORE - REPORT
|
|
|
1150
1150
|
sh:targetClass crm:E39_Actor ;
|
|
1151
1151
|
rdfs:label "Autore report" ;
|
|
1152
1152
|
sh:property [
|
|
1153
|
-
sh:path
|
|
1153
|
+
sh:path crm:P1_is_identified_by ;
|
|
1154
1154
|
sh:node ex:E41Appellation03Shape ;
|
|
1155
1155
|
sh:name "Autore report" ;
|
|
1156
1156
|
sh:maxCount 1 ;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
2
|
-
|
|
2
|
+
#@prefix ex: <http://example.org/shapes/> .
|
|
3
3
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
4
4
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
5
5
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
@@ -12,169 +12,203 @@
|
|
|
12
12
|
#@prefix volipi: <http://data.sparna.fr/ontologies/volipi#> .
|
|
13
13
|
#@prefix skos: <http://www.w3.org/2004/02/skos/core> .
|
|
14
14
|
@prefix indagine: <http://indagine/> .
|
|
15
|
+
@prefix this: <http://data.mydomain.com/sparnatural-page/sparnatural-config/> .
|
|
15
16
|
|
|
17
|
+
#@prefix dash: <http://datashapes.org/dash#> .
|
|
18
|
+
#@prefix core: <http://data.sparna.fr/ontologies/sparnatural-config-core#> .
|
|
19
|
+
#
|
|
20
|
+
#this:E7Activity01Shape_label sh:path rdfs:label ;
|
|
21
|
+
# #sh:order "1" ;
|
|
22
|
+
# sh:name "Label" ;
|
|
23
|
+
# #sh:description "Specifies the name of the object."@en, "Spรฉcifie le nom du Sympรดme"@fr ;
|
|
24
|
+
# sh:maxCount 1 ;
|
|
25
|
+
# sh:nodeKind sh:Literal ;
|
|
26
|
+
# sh:datatype rdf:string ;
|
|
27
|
+
# dash:searchWidget core:SearchProperty ;
|
|
28
|
+
# dash:propertyRole dash:LabelRole ;
|
|
29
|
+
# core:enableOptional "false"^^xsd:boolean ;
|
|
30
|
+
# core:enableNegation "false"^^xsd:boolean .
|
|
31
|
+
#
|
|
32
|
+
#this:E42Identifier01Shape_label sh:path rdfs:label ;
|
|
33
|
+
# #sh:order "1" ;
|
|
34
|
+
# sh:name "Label" ;
|
|
35
|
+
# #sh:description "Specifies the name of the object."@en, "Spรฉcifie le nom du Sympรดme"@fr ;
|
|
36
|
+
# sh:maxCount 1 ;
|
|
37
|
+
# sh:nodeKind sh:Literal ;
|
|
38
|
+
# sh:datatype rdf:string ;
|
|
39
|
+
# dash:searchWidget core:SearchProperty ;
|
|
40
|
+
# dash:propertyRole dash:LabelRole ;
|
|
41
|
+
# core:enableOptional "false"^^xsd:boolean ;
|
|
42
|
+
# core:enableNegation "false"^^xsd:boolean .
|
|
16
43
|
|
|
17
|
-
|
|
44
|
+
this:E7Activity01Shape # INDAGINE
|
|
18
45
|
a sh:NodeShape, rdfs:Class ;
|
|
19
46
|
sh:targetClass crm:E7_Activity ;
|
|
20
|
-
rdfs:label "Indagine" ;
|
|
47
|
+
rdfs:label "Indagine" ;
|
|
48
|
+
#sh:description "Indagine" ;
|
|
21
49
|
sh:property [
|
|
22
50
|
sh:path crm:P48_has_preferred_identifier ;
|
|
23
|
-
sh:node
|
|
24
|
-
sh:name "
|
|
51
|
+
sh:node this:E42Identifier01Shape ;
|
|
52
|
+
sh:name "ha identificativo" ;
|
|
25
53
|
sh:maxCount 1 ;
|
|
26
54
|
] ;
|
|
27
55
|
sh:property [
|
|
28
56
|
sh:path crm:P17_was_motivated_by ;
|
|
29
|
-
sh:node
|
|
30
|
-
sh:name "
|
|
57
|
+
sh:node this:I12AdoptedBeliefShape ;
|
|
58
|
+
sh:name "รจ motivato da" ;
|
|
31
59
|
sh:maxCount 1 ;
|
|
32
60
|
] ;
|
|
33
61
|
sh:property [
|
|
34
62
|
sh:path crm:P14_carried_out_by ;
|
|
35
|
-
sh:node
|
|
36
|
-
sh:name "
|
|
63
|
+
sh:node this:E39Actor01Shape ;
|
|
64
|
+
sh:name "eseguito da" ;
|
|
37
65
|
sh:maxCount 1 ;
|
|
38
66
|
] ;
|
|
39
67
|
sh:property [
|
|
40
68
|
sh:path crm:P16_used_specific_object ;
|
|
41
|
-
sh:node
|
|
42
|
-
sh:name "
|
|
69
|
+
sh:node this:S13Sample01Shape ;
|
|
70
|
+
sh:name "ha usato un oggetto specifico" ;
|
|
43
71
|
sh:maxCount 1 ;
|
|
44
72
|
] .
|
|
73
|
+
# ] ;
|
|
74
|
+
# sh:property this:E7Activity01Shape_label .
|
|
45
75
|
|
|
46
|
-
|
|
76
|
+
this:E39Actor01Shape # ATTORI
|
|
47
77
|
a sh:NodeShape, rdfs:Class ;
|
|
48
78
|
sh:targetClass crm:E39_Actor ;
|
|
49
79
|
rdfs:label "Attori coinvolti" ;
|
|
50
80
|
sh:property [
|
|
51
81
|
sh:path crm:P2_has_type ;
|
|
52
|
-
sh:node
|
|
53
|
-
sh:name "
|
|
82
|
+
sh:node this:E55Type03Shape ;
|
|
83
|
+
sh:name "ha tipo" ;
|
|
54
84
|
sh:maxCount 1 ;
|
|
55
85
|
] .
|
|
56
86
|
|
|
57
|
-
|
|
87
|
+
this:S13Sample01Shape # CAMPIONE
|
|
58
88
|
a sh:NodeShape, rdfs:Class ;
|
|
59
89
|
sh:targetClass j.0:S13_Sample ;
|
|
60
90
|
rdfs:label "Campione" ;
|
|
61
91
|
sh:property [
|
|
62
92
|
sh:path crm:P2_has_type ;
|
|
63
|
-
sh:node
|
|
64
|
-
sh:name "
|
|
93
|
+
sh:node this:E55Type05Shape ;
|
|
94
|
+
sh:name "ha tipo" ;
|
|
65
95
|
sh:maxCount 1 ;
|
|
66
96
|
] ;
|
|
67
97
|
sh:property [
|
|
68
98
|
sh:path basecpm:Pc43i_uses ;
|
|
69
|
-
sh:node
|
|
70
|
-
sh:name "
|
|
99
|
+
sh:node this:CP2ArchitectureWorkShape ;
|
|
100
|
+
sh:name "utilizza" ;
|
|
71
101
|
sh:maxCount 1 ;
|
|
72
102
|
] .
|
|
73
103
|
|
|
74
|
-
|
|
104
|
+
this:CP2ArchitectureWorkShape # BENE DI RIFERIMENTO
|
|
75
105
|
a sh:NodeShape, rdfs:Class ;
|
|
76
106
|
sh:targetClass basecpm:CP2_Architecture_Work ;
|
|
77
107
|
rdfs:label "Bene di riferimento" ;
|
|
78
108
|
sh:property [
|
|
79
109
|
sh:path crm:P1_is_identified_by ;
|
|
80
|
-
sh:node
|
|
81
|
-
sh:name "
|
|
110
|
+
sh:node this:E41Appellation02Shape ;
|
|
111
|
+
sh:name "รจ identificato da" ;
|
|
82
112
|
sh:maxCount 1 ;
|
|
83
113
|
] .
|
|
84
114
|
|
|
85
|
-
|
|
115
|
+
this:E42Identifier01Shape #ID INDAGINE
|
|
86
116
|
a sh:NodeShape, rdfs:Class ;
|
|
87
117
|
sh:targetClass crm:E42_Identifier ;
|
|
88
118
|
rdfs:label "ID Indagine" ;
|
|
89
119
|
sh:property [
|
|
90
120
|
sh:path indagine:id_indagine ;
|
|
91
|
-
sh:name "ID
|
|
121
|
+
sh:name "ID" ;
|
|
92
122
|
sh:datatype xsd:string ;
|
|
93
123
|
sh:maxCount 1 ;
|
|
94
124
|
] .
|
|
125
|
+
# ] ;
|
|
126
|
+
# sh:property this:E42Identifier01Shape_label .
|
|
95
127
|
|
|
96
|
-
|
|
128
|
+
this:I12AdoptedBeliefShape # QUESITO DIAGNOSTICO
|
|
97
129
|
a sh:NodeShape, rdfs:Class ;
|
|
98
130
|
sh:targetClass base:I12_Adopted_Belief ;
|
|
99
131
|
rdfs:label "Quesito diagnostico" ;
|
|
100
132
|
sh:property [
|
|
101
133
|
sh:path crm:P2_has_type ;
|
|
102
|
-
sh:node
|
|
103
|
-
sh:name "
|
|
134
|
+
sh:node this:E55Type02Shape ;
|
|
135
|
+
sh:name "ha tipo" ;
|
|
104
136
|
sh:maxCount 1 ;
|
|
105
137
|
] .
|
|
106
138
|
|
|
107
|
-
|
|
139
|
+
this:E41Appellation01Shape # ENTE RICHIEDENTE
|
|
108
140
|
a sh:NodeShape, rdfs:Class ;
|
|
109
141
|
sh:targetClass crm:E41_Appellation ;
|
|
110
142
|
rdfs:label "Ente richiedente - Schedatore" ;
|
|
111
143
|
sh:property [
|
|
112
144
|
sh:path indagine:ente_richiedente ;
|
|
113
145
|
sh:datatype xsd:string ;
|
|
114
|
-
sh:
|
|
146
|
+
#sh:nodeKind sh:Literal ;
|
|
147
|
+
sh:name "ente richiedente" ;
|
|
115
148
|
sh:maxCount 1 ;
|
|
116
149
|
] ;
|
|
117
150
|
sh:property [
|
|
118
151
|
sh:path indagine:schedatore ;
|
|
119
152
|
sh:datatype xsd:string ;
|
|
120
|
-
sh:
|
|
153
|
+
#sh:nodeKind sh:Literal ;
|
|
154
|
+
sh:name "schedatore" ;
|
|
121
155
|
sh:maxCount 1 ;
|
|
122
156
|
] .
|
|
123
157
|
|
|
124
|
-
|
|
158
|
+
this:E41Appellation02Shape # DENOMINAZIONE BENE
|
|
125
159
|
a sh:NodeShape, rdfs:Class ;
|
|
126
160
|
sh:targetClass crm:E41_Appellation ;
|
|
127
161
|
rdfs:label "Denominazione bene" ;
|
|
128
162
|
sh:property [
|
|
129
163
|
sh:path indagine:bene_di_riferimento ;
|
|
130
164
|
sh:datatype xsd:string ;
|
|
131
|
-
|
|
165
|
+
#sh:nodeKind sh:Literal ;
|
|
166
|
+
sh:name "denominazione" ;
|
|
132
167
|
sh:maxCount 1 ;
|
|
133
168
|
] .
|
|
134
169
|
|
|
135
|
-
|
|
170
|
+
this:E55Type02Shape # TIPO QUESITO DIAGNOSTICO
|
|
136
171
|
a sh:NodeShape, rdfs:Class ;
|
|
137
172
|
sh:targetClass crm:E55_Type ;
|
|
138
173
|
rdfs:label "Tipo quesito diagnostico" ;
|
|
139
174
|
#volipi:iconName "fa-solid fa-car" ;
|
|
140
175
|
sh:property [
|
|
141
176
|
sh:path indagine:tipo_quesito_diagnostico ;
|
|
142
|
-
|
|
177
|
+
#sh:class owl:Class ; # vocabolario QUESITO DIAGNOSTICO (8) id="quesito-diagnostico"
|
|
178
|
+
#owl:imports <https://raw.githubusercontent.com/tibonto/DFG-Fachsystematik-Ontology/refs/heads/main/dfgfo.ttl>;
|
|
143
179
|
#owl:imports <OAC_EXPOSED_PROTOCOL://OAC_EXPOSED_HOST:OAC_EXPOSED_PORT/backend/fuseki/get-vocabolary-terms/quesito-diagnostico> ;
|
|
144
|
-
|
|
145
|
-
sh:
|
|
146
|
-
sh:name "Tipo quesito diagnostico" ;
|
|
180
|
+
sh:datatype xsd:string ;
|
|
181
|
+
sh:name "tipo" ;
|
|
147
182
|
sh:maxCount 1 ;
|
|
148
183
|
] .
|
|
149
184
|
|
|
150
|
-
|
|
185
|
+
this:E55Type03Shape # TIPOLOGIA ATTORI
|
|
151
186
|
a sh:NodeShape, rdfs:Class ;
|
|
152
187
|
sh:targetClass crm:E55_Type ;
|
|
153
188
|
rdfs:label "Tipo attori" ;
|
|
154
189
|
sh:property [
|
|
155
190
|
sh:path crm:P1_is_identified_by ;
|
|
156
|
-
sh:node
|
|
157
|
-
sh:name "
|
|
191
|
+
sh:node this:E41Appellation01Shape ;
|
|
192
|
+
sh:name "รจ identificato da" ;
|
|
158
193
|
sh:maxCount 1 ;
|
|
159
194
|
#] ;
|
|
160
195
|
#sh:property [
|
|
161
196
|
# sh:path [sh:inversePath crm:P1i_identifies] ; # usata proprietร inversa di P1_is_defined_by ;
|
|
162
|
-
# sh:node
|
|
197
|
+
# sh:node this:E41Appellation01bShape ;
|
|
163
198
|
# sh:name "Schedatore" ;
|
|
164
199
|
# sh:maxCount 1 ;
|
|
165
200
|
] .
|
|
166
201
|
|
|
167
|
-
|
|
202
|
+
this:E55Type05Shape # TIPO CAMPIONE
|
|
168
203
|
a sh:NodeShape, rdfs:Class ;
|
|
169
204
|
sh:targetClass crm:E55_Type ;
|
|
170
205
|
rdfs:label "Tipo campione" ;
|
|
171
206
|
sh:property [
|
|
172
207
|
sh:path indagine:tipo_campione ;
|
|
173
208
|
#sh:class owl:Class ; # vocabolario TIPO CAMPIONE (21) id="tipo-campione
|
|
174
|
-
#
|
|
209
|
+
#owl:imports <https://raw.githubusercontent.com/tibonto/DFG-Fachsystematik-Ontology/refs/heads/main/dfgfo.ttl>;
|
|
175
210
|
#owl:imports <OAC_EXPOSED_PROTOCOL://OAC_EXPOSED_HOST:OAC_EXPOSED_PORT/backend/fuseki/get-vocabolary-terms/tipo-campione> ;
|
|
176
|
-
|
|
177
|
-
sh:
|
|
178
|
-
sh:name "Tipo campione" ;
|
|
211
|
+
sh:datatype xsd:string ;
|
|
212
|
+
sh:name "tipo" ;
|
|
179
213
|
sh:maxCount 1 ;
|
|
180
214
|
] .
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
2
|
-
|
|
2
|
+
#@prefix ex: <http://example.org/shapes/> .
|
|
3
3
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
4
4
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
5
5
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
@@ -12,82 +12,83 @@
|
|
|
12
12
|
#@prefix volipi: <http://data.sparna.fr/ontologies/volipi#> .
|
|
13
13
|
#@prefix skos: <http://www.w3.org/2004/02/skos/core> .
|
|
14
14
|
@prefix indagine: <http://indagine/> .
|
|
15
|
+
@prefix this: <http://data.mydomain.com/sparnatural-page/sparnatural-config/> .
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
this:S13Sample01Shape # CAMPIONE
|
|
18
19
|
a sh:NodeShape, rdfs:Class ;
|
|
19
20
|
sh:targetClass j.0:S13_Sample ;
|
|
20
21
|
rdfs:label "Campione" ;
|
|
21
22
|
sh:property [
|
|
22
23
|
sh:path crm:P48_has_preferred_identifier ;
|
|
23
|
-
sh:node
|
|
24
|
-
sh:name "
|
|
24
|
+
sh:node this:E42Identifier02Shape ;
|
|
25
|
+
sh:name "ha identificativo" ;
|
|
25
26
|
sh:maxCount 1 ;
|
|
26
27
|
] ;
|
|
27
28
|
sh:property [
|
|
28
29
|
sh:path crm:P2_has_type ;
|
|
29
|
-
sh:node
|
|
30
|
-
sh:name "
|
|
30
|
+
sh:node this:E55Type04Shape ;
|
|
31
|
+
sh:name "ha tipo" ;
|
|
31
32
|
sh:maxCount 1 ;
|
|
32
33
|
] ;
|
|
33
34
|
sh:property [
|
|
34
35
|
sh:path j.0:O25_contains ;
|
|
35
|
-
sh:node
|
|
36
|
-
sh:name "
|
|
36
|
+
sh:node this:S10MaterialSubstantial01Shape ;
|
|
37
|
+
sh:name "contiene" ;
|
|
37
38
|
sh:maxCount 1 ;
|
|
38
39
|
] ;
|
|
39
40
|
sh:property [
|
|
40
41
|
sh:path basecpm:PC43i_uses ;
|
|
41
|
-
sh:node
|
|
42
|
-
sh:name "
|
|
42
|
+
sh:node this:CP2ArchitectureWorkShape ;
|
|
43
|
+
sh:name "utilizza" ;
|
|
43
44
|
sh:maxCount 1 ;
|
|
44
45
|
] .
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
this:S10MaterialSubstantial01Shape # MATERIALE PREVALENTE - CAMPIONE
|
|
47
48
|
a sh:NodeShape, rdfs:Class ;
|
|
48
49
|
sh:targetClass j.0:S10_Material_Substantial ;
|
|
49
50
|
rdfs:label "Materiale" ;
|
|
50
51
|
sh:property [
|
|
51
52
|
sh:path crm:P2_has_type ;
|
|
52
|
-
sh:node
|
|
53
|
-
sh:name "
|
|
53
|
+
sh:node this:E55Type08Shape ;
|
|
54
|
+
sh:name "ha tipo" ;
|
|
54
55
|
sh:maxCount 1 ;
|
|
55
56
|
] .
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
this:CP2ArchitectureWorkShape # BENE DI RIFERIMENTO
|
|
58
59
|
a sh:NodeShape, rdfs:Class ;
|
|
59
60
|
sh:targetClass basecpm:CP2_Architecture_Work ;
|
|
60
61
|
rdfs:label "Bene di riferimento" ;
|
|
61
62
|
sh:property [
|
|
62
63
|
sh:path crm:P1_is_identified_by ;
|
|
63
|
-
sh:node
|
|
64
|
-
sh:name "
|
|
64
|
+
sh:node this:E41Appellation02Shape ;
|
|
65
|
+
sh:name "รจ identificato da" ;
|
|
65
66
|
sh:maxCount 1 ;
|
|
66
67
|
] .
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
this:E42Identifier02Shape # ID CAMPIONE
|
|
69
70
|
a sh:NodeShape, rdfs:Class ;
|
|
70
71
|
sh:targetClass crm:E42_Identifier ;
|
|
71
72
|
rdfs:label "ID campione" ;
|
|
72
73
|
sh:property [
|
|
73
74
|
sh:path indagine:id_campione ;
|
|
74
|
-
sh:name "ID
|
|
75
|
+
sh:name "ID" ;
|
|
75
76
|
sh:datatype xsd:string ;
|
|
76
77
|
sh:maxCount 1 ;
|
|
77
78
|
] .
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
this:E41Appellation02Shape # DENOMINAZIONE BENE
|
|
80
81
|
a sh:NodeShape, rdfs:Class ;
|
|
81
82
|
sh:targetClass crm:E41_Appellation ;
|
|
82
83
|
rdfs:label "Denominazione bene" ;
|
|
83
84
|
sh:property [
|
|
84
85
|
sh:path indagine:bene_di_riferimento ;
|
|
85
86
|
sh:datatype xsd:string ;
|
|
86
|
-
sh:name "
|
|
87
|
+
sh:name "denominazione" ;
|
|
87
88
|
sh:maxCount 1 ;
|
|
88
89
|
] .
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
this:E55Type04Shape # TIPO CAMPIONE
|
|
91
92
|
a sh:NodeShape, rdfs:Class ;
|
|
92
93
|
sh:targetClass crm:E55_Type ;
|
|
93
94
|
rdfs:label "Tipo campione" ;
|
|
@@ -95,13 +96,13 @@ ex:E55Type04Shape # TIPO CAMPIONE
|
|
|
95
96
|
sh:path indagine:tipo_campione ;
|
|
96
97
|
#sh:class owl:Class ; # vocabolario TIPO CAMPIONE (21) id="tipo-campione"
|
|
97
98
|
#owl:imports <OAC_EXPOSED_PROTOCOL://OAC_EXPOSED_HOST:OAC_EXPOSED_PORT/backend/fuseki/get-vocabolary-terms/tipo-campione> ;
|
|
98
|
-
#sh:nodeKind sh:Literal;
|
|
99
|
-
sh:datatype xsd:string;
|
|
100
|
-
sh:name "
|
|
99
|
+
#sh:nodeKind sh:Literal ;
|
|
100
|
+
sh:datatype xsd:string ;
|
|
101
|
+
sh:name "tipo" ;
|
|
101
102
|
sh:maxCount 1 ;
|
|
102
103
|
] .
|
|
103
104
|
|
|
104
|
-
|
|
105
|
+
this:E55Type08Shape # TIPO MATERIALE (in CAMPIONE, SOTTOCAMPIONE, ELEMENTO COSTRUTTIVO, ...)
|
|
105
106
|
a sh:NodeShape, rdfs:Class ;
|
|
106
107
|
sh:targetClass crm:E55_Type ;
|
|
107
108
|
rdfs:label "Tipo materiale" ;
|
|
@@ -110,8 +111,8 @@ ex:E55Type08Shape # TIPO MATERIALE (in CAMPIONE, SOTTOCAMPIONE, ELEMENTO COSTRUT
|
|
|
110
111
|
#sh:class owl:Class ; # vocabolario TIPO MATERIALE (11) id="materiale"
|
|
111
112
|
#owl:imports <OAC_EXPOSED_PROTOCOL://OAC_EXPOSED_HOST:OAC_EXPOSED_PORT/backend/fuseki/get-vocabolary-terms/materiale> ;
|
|
112
113
|
#sh:nodeKind sh:Literal;
|
|
113
|
-
sh:datatype xsd:string;
|
|
114
|
-
sh:name "
|
|
114
|
+
sh:datatype xsd:string ;
|
|
115
|
+
sh:name "tipo" ;
|
|
115
116
|
sh:maxCount 1 ;
|
|
116
117
|
] .
|
|
117
118
|
|