Renamed to .spin. file
Updated download page to new NPD namespace
Showing
4 changed files
with
83 additions
and
72 deletions
| 1 | -<html xmlns:npd="http://www.reportinghub.no/schema/npd#"> | 1 | +<html> |
| 2 | <head> | 2 | <head> |
| 3 | <title>ReportingHub - Download DDR</title> | 3 | <title>ReportingHub - Download DDR</title> |
| 4 | <link rel="stylesheet" type="text/css" href="lib/rh/rh.css" /> | 4 | <link rel="stylesheet" type="text/css" href="lib/rh/rh.css" /> |
| ... | @@ -37,8 +37,8 @@ | ... | @@ -37,8 +37,8 @@ |
| 37 | <ui:forEach ui:resultSet="{# | 37 | <ui:forEach ui:resultSet="{# |
| 38 | SELECT ?well ?wellName | 38 | SELECT ?well ?wellName |
| 39 | WHERE { | 39 | WHERE { |
| 40 | - GRAPH <https://www.reportinghub.no/data/npd> { | 40 | + GRAPH npdata:npd { |
| 41 | - ?well a npd:Well . | 41 | + ?well a ep-well:Well . |
| 42 | ?well npd:name ?wellName . | 42 | ?well npd:name ?wellName . |
| 43 | } | 43 | } |
| 44 | } ORDER BY ?wellName | 44 | } ORDER BY ?wellName | ... | ... |
| ... | @@ -8,6 +8,7 @@ | ... | @@ -8,6 +8,7 @@ |
| 8 | # imports: http://www.reportinghub.no/np/schema/1.0/npd | 8 | # imports: http://www.reportinghub.no/np/schema/1.0/npd |
| 9 | 9 | ||
| 10 | @prefix fn: <http://www.w3.org/2005/xpath-functions#> . | 10 | @prefix fn: <http://www.w3.org/2005/xpath-functions#> . |
| 11 | +@prefix npdata: <http://www.reportinghub.no/np/data/> . | ||
| 11 | @prefix owl: <http://www.w3.org/2002/07/owl#> . | 12 | @prefix owl: <http://www.w3.org/2002/07/owl#> . |
| 12 | @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | 13 | @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . |
| 13 | @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | 14 | @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . |
| ... | @@ -48,6 +49,10 @@ | ... | @@ -48,6 +49,10 @@ |
| 48 | rdfs:label "well name"^^xsd:string ; | 49 | rdfs:label "well name"^^xsd:string ; |
| 49 | rdfs:subPropertyOf sp:arg . | 50 | rdfs:subPropertyOf sp:arg . |
| 50 | 51 | ||
| 52 | +npdata:npd | ||
| 53 | + rdf:type rdfs:Resource ; | ||
| 54 | + rdfs:label "NPDI"^^xsd:string . | ||
| 55 | + | ||
| 51 | <http://www.reportinghub.no/spin/rh> | 56 | <http://www.reportinghub.no/spin/rh> |
| 52 | rdf:type owl:Ontology ; | 57 | rdf:type owl:Ontology ; |
| 53 | rdfs:comment "A collection of SPIN functions and templates to support working with the ReportingHub schemas."^^xsd:string ; | 58 | rdfs:comment "A collection of SPIN functions and templates to support working with the ReportingHub schemas."^^xsd:string ; |
| ... | @@ -56,7 +61,7 @@ | ... | @@ -56,7 +61,7 @@ |
| 56 | 61 | ||
| 57 | rhspin:GetWellBoresOfWell | 62 | rhspin:GetWellBoresOfWell |
| 58 | rdf:type spin:SelectTemplate ; | 63 | rdf:type spin:SelectTemplate ; |
| 59 | - rdfs:comment "Gets an ordered list of well bores that belong to a given Well. Result variables are ?wellBore and ?wellBoreName."^^xsd:string ; | 64 | + rdfs:comment "Gets an ordered list of well bores that belong to a given Well. Result variables are ?wellBoreId and ?wellBoreName."^^xsd:string ; |
| 60 | rdfs:label "Get well bores of well"^^xsd:string ; | 65 | rdfs:label "Get well bores of well"^^xsd:string ; |
| 61 | rdfs:subClassOf spin:SelectTemplates ; | 66 | rdfs:subClassOf spin:SelectTemplates ; |
| 62 | spin:body | 67 | spin:body |
| ... | @@ -68,12 +73,15 @@ rhspin:GetWellBoresOfWell | ... | @@ -68,12 +73,15 @@ rhspin:GetWellBoresOfWell |
| 68 | [ sp:varName "well"^^xsd:string | 73 | [ sp:varName "well"^^xsd:string |
| 69 | ] ; | 74 | ] ; |
| 70 | sp:predicate <http://www.reportinghub.no/np/schema/npd#partOfWell> ; | 75 | sp:predicate <http://www.reportinghub.no/np/schema/npd#partOfWell> ; |
| 71 | - sp:subject _:b2 | 76 | + sp:subject _:b3 |
| 72 | ] [ sp:object _:b1 ; | 77 | ] [ sp:object _:b1 ; |
| 73 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; | 78 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; |
| 74 | - sp:subject _:b2 | 79 | + sp:subject _:b3 |
| 80 | + ] [ sp:object _:b2 ; | ||
| 81 | + sp:predicate <http://www.reportinghub.no/np/schema/npd#id> ; | ||
| 82 | + sp:subject _:b3 | ||
| 75 | ]) ; | 83 | ]) ; |
| 76 | - sp:graphNameNode <https://www.reportinghub.no/np/data/npd> | 84 | + sp:graphNameNode npdata:npd |
| 77 | ]) | 85 | ]) |
| 78 | ] ; | 86 | ] ; |
| 79 | spin:constraint | 87 | spin:constraint |
| ... | @@ -135,7 +143,7 @@ rhspin:companyHasLicenceForWellBore | ... | @@ -135,7 +143,7 @@ rhspin:companyHasLicenceForWellBore |
| 135 | spin:body | 143 | spin:body |
| 136 | [ rdf:type sp:Select ; | 144 | [ rdf:type sp:Select ; |
| 137 | sp:distinct "true"^^xsd:boolean ; | 145 | sp:distinct "true"^^xsd:boolean ; |
| 138 | - sp:resultVariables (_:b3) ; | 146 | + sp:resultVariables (_:b4) ; |
| 139 | sp:where ([ rdf:type sp:Bind ; | 147 | sp:where ([ rdf:type sp:Bind ; |
| 140 | sp:expression | 148 | sp:expression |
| 141 | [ rdf:type xsd:date ; | 149 | [ rdf:type xsd:date ; |
| ... | @@ -148,37 +156,37 @@ rhspin:companyHasLicenceForWellBore | ... | @@ -148,37 +156,37 @@ rhspin:companyHasLicenceForWellBore |
| 148 | sp:arg3 10 | 156 | sp:arg3 10 |
| 149 | ] | 157 | ] |
| 150 | ] ; | 158 | ] ; |
| 151 | - sp:variable _:b4 | 159 | + sp:variable _:b5 |
| 152 | ] [ sp:object spin:_arg1 ; | 160 | ] [ sp:object spin:_arg1 ; |
| 153 | sp:predicate <http://www.reportinghub.no/np/schema/npd#shareHolder> ; | 161 | sp:predicate <http://www.reportinghub.no/np/schema/npd#shareHolder> ; |
| 154 | - sp:subject _:b5 | 162 | + sp:subject _:b6 |
| 155 | - ] [ sp:object _:b6 ; | 163 | + ] [ sp:object _:b7 ; |
| 156 | sp:predicate <http://www.reportinghub.no/np/schema/npd#licenceShared> ; | 164 | sp:predicate <http://www.reportinghub.no/np/schema/npd#licenceShared> ; |
| 157 | - sp:subject _:b5 | 165 | + sp:subject _:b6 |
| 158 | ] [ sp:object <http://www.reportinghub.no/np/schema/npd#LS_Active> ; | 166 | ] [ sp:object <http://www.reportinghub.no/np/schema/npd#LS_Active> ; |
| 159 | sp:predicate <http://www.reportinghub.no/np/schema/npd#licenceStatus> ; | 167 | sp:predicate <http://www.reportinghub.no/np/schema/npd#licenceStatus> ; |
| 160 | - sp:subject _:b6 | 168 | + sp:subject _:b7 |
| 161 | - ] [ sp:object _:b7 ; | 169 | + ] [ sp:object _:b8 ; |
| 162 | sp:predicate <http://www.reportinghub.no/np/schema/npd#startDate> ; | 170 | sp:predicate <http://www.reportinghub.no/np/schema/npd#startDate> ; |
| 163 | - sp:subject _:b6 | 171 | + sp:subject _:b7 |
| 164 | ] [ rdf:type sp:Filter ; | 172 | ] [ rdf:type sp:Filter ; |
| 165 | sp:expression | 173 | sp:expression |
| 166 | [ rdf:type sp:le ; | 174 | [ rdf:type sp:le ; |
| 167 | - sp:arg1 _:b7 ; | 175 | + sp:arg1 _:b8 ; |
| 168 | - sp:arg2 _:b4 | 176 | + sp:arg2 _:b5 |
| 169 | ] | 177 | ] |
| 170 | - ] [ sp:object _:b8 ; | 178 | + ] [ sp:object _:b9 ; |
| 171 | sp:predicate <http://www.reportinghub.no/np/schema/npd#endDate> ; | 179 | sp:predicate <http://www.reportinghub.no/np/schema/npd#endDate> ; |
| 172 | - sp:subject _:b6 | 180 | + sp:subject _:b7 |
| 173 | ] [ rdf:type sp:Filter ; | 181 | ] [ rdf:type sp:Filter ; |
| 174 | sp:expression | 182 | sp:expression |
| 175 | [ rdf:type sp:gt ; | 183 | [ rdf:type sp:gt ; |
| 176 | - sp:arg1 _:b8 ; | 184 | + sp:arg1 _:b9 ; |
| 177 | - sp:arg2 _:b4 | 185 | + sp:arg2 _:b5 |
| 178 | ] | 186 | ] |
| 179 | - ] [ sp:object _:b6 ; | 187 | + ] [ sp:object _:b7 ; |
| 180 | sp:predicate <http://www.reportinghub.no/np/schema/npd#drilledInProductionLicence> ; | 188 | sp:predicate <http://www.reportinghub.no/np/schema/npd#drilledInProductionLicence> ; |
| 181 | - sp:subject _:b3 | 189 | + sp:subject _:b4 |
| 182 | ]) | 190 | ]) |
| 183 | ] ; | 191 | ] ; |
| 184 | spin:constraint | 192 | spin:constraint |
| ... | @@ -285,7 +293,7 @@ rhspin:normalizeString | ... | @@ -285,7 +293,7 @@ rhspin:normalizeString |
| 285 | rdfs:subClassOf spl:StringFunctions ; | 293 | rdfs:subClassOf spl:StringFunctions ; |
| 286 | spin:body | 294 | spin:body |
| 287 | [ rdf:type sp:Select ; | 295 | [ rdf:type sp:Select ; |
| 288 | - sp:resultVariables (_:b9) ; | 296 | + sp:resultVariables (_:b10) ; |
| 289 | sp:where ([ rdf:type sp:Bind ; | 297 | sp:where ([ rdf:type sp:Bind ; |
| 290 | sp:expression | 298 | sp:expression |
| 291 | [ rdf:type spif:regex ; | 299 | [ rdf:type spif:regex ; |
| ... | @@ -293,67 +301,67 @@ rhspin:normalizeString | ... | @@ -293,67 +301,67 @@ rhspin:normalizeString |
| 293 | sp:arg2 "\\((.*)\\)" ; | 301 | sp:arg2 "\\((.*)\\)" ; |
| 294 | sp:arg3 "" | 302 | sp:arg3 "" |
| 295 | ] ; | 303 | ] ; |
| 296 | - sp:variable _:b10 | 304 | + sp:variable _:b11 |
| 297 | ] [ rdf:type sp:Bind ; | 305 | ] [ rdf:type sp:Bind ; |
| 298 | sp:expression | 306 | sp:expression |
| 299 | [ rdf:type spif:trim ; | 307 | [ rdf:type spif:trim ; |
| 300 | - sp:arg1 _:b10 | 308 | + sp:arg1 _:b11 |
| 301 | ] ; | 309 | ] ; |
| 302 | - sp:variable _:b11 | 310 | + sp:variable _:b12 |
| 303 | ] [ rdf:type sp:Bind ; | 311 | ] [ rdf:type sp:Bind ; |
| 304 | sp:expression | 312 | sp:expression |
| 305 | [ rdf:type spif:encodeURL ; | 313 | [ rdf:type spif:encodeURL ; |
| 306 | - sp:arg1 _:b11 | 314 | + sp:arg1 _:b12 |
| 307 | ] ; | 315 | ] ; |
| 308 | - sp:variable _:b12 | 316 | + sp:variable _:b13 |
| 309 | ] [ rdf:type sp:Bind ; | 317 | ] [ rdf:type sp:Bind ; |
| 310 | sp:expression | 318 | sp:expression |
| 311 | [ rdf:type spif:regex ; | 319 | [ rdf:type spif:regex ; |
| 312 | - sp:arg1 _:b12 ; | 320 | + sp:arg1 _:b13 ; |
| 313 | sp:arg2 "%2F" ; | 321 | sp:arg2 "%2F" ; |
| 314 | sp:arg3 "_" | 322 | sp:arg3 "_" |
| 315 | ] ; | 323 | ] ; |
| 316 | - sp:variable _:b13 | 324 | + sp:variable _:b14 |
| 317 | ] [ rdf:type sp:Bind ; | 325 | ] [ rdf:type sp:Bind ; |
| 318 | sp:expression | 326 | sp:expression |
| 319 | [ rdf:type spif:regex ; | 327 | [ rdf:type spif:regex ; |
| 320 | - sp:arg1 _:b13 ; | 328 | + sp:arg1 _:b14 ; |
| 321 | sp:arg2 "%[0-9A-F][0-9A-F]" ; | 329 | sp:arg2 "%[0-9A-F][0-9A-F]" ; |
| 322 | sp:arg3 "" | 330 | sp:arg3 "" |
| 323 | ] ; | 331 | ] ; |
| 324 | - sp:variable _:b14 | 332 | + sp:variable _:b15 |
| 325 | ] [ rdf:type sp:Bind ; | 333 | ] [ rdf:type sp:Bind ; |
| 326 | sp:expression | 334 | sp:expression |
| 327 | [ rdf:type spif:regex ; | 335 | [ rdf:type spif:regex ; |
| 328 | - sp:arg1 _:b14 ; | 336 | + sp:arg1 _:b15 ; |
| 329 | sp:arg2 "\\+" ; | 337 | sp:arg2 "\\+" ; |
| 330 | sp:arg3 "_" | 338 | sp:arg3 "_" |
| 331 | ] ; | 339 | ] ; |
| 332 | - sp:variable _:b15 | 340 | + sp:variable _:b16 |
| 333 | ] [ rdf:type sp:Bind ; | 341 | ] [ rdf:type sp:Bind ; |
| 334 | sp:expression | 342 | sp:expression |
| 335 | [ rdf:type spif:regex ; | 343 | [ rdf:type spif:regex ; |
| 336 | - sp:arg1 _:b15 ; | 344 | + sp:arg1 _:b16 ; |
| 337 | sp:arg2 "_+" ; | 345 | sp:arg2 "_+" ; |
| 338 | sp:arg3 "_" | 346 | sp:arg3 "_" |
| 339 | ] ; | 347 | ] ; |
| 340 | - sp:variable _:b16 | 348 | + sp:variable _:b17 |
| 341 | ] [ rdf:type sp:Bind ; | 349 | ] [ rdf:type sp:Bind ; |
| 342 | sp:expression | 350 | sp:expression |
| 343 | [ rdf:type spif:regex ; | 351 | [ rdf:type spif:regex ; |
| 344 | - sp:arg1 _:b16 ; | 352 | + sp:arg1 _:b17 ; |
| 345 | sp:arg2 "\\*" ; | 353 | sp:arg2 "\\*" ; |
| 346 | sp:arg3 "" | 354 | sp:arg3 "" |
| 347 | ] ; | 355 | ] ; |
| 348 | - sp:variable _:b17 | 356 | + sp:variable _:b18 |
| 349 | ] [ rdf:type sp:Bind ; | 357 | ] [ rdf:type sp:Bind ; |
| 350 | sp:expression | 358 | sp:expression |
| 351 | [ rdf:type xsd:string ; | 359 | [ rdf:type xsd:string ; |
| 352 | sp:arg1 [ rdf:type spif:upperCase ; | 360 | sp:arg1 [ rdf:type spif:upperCase ; |
| 353 | - sp:arg1 _:b17 | 361 | + sp:arg1 _:b18 |
| 354 | ] | 362 | ] |
| 355 | ] ; | 363 | ] ; |
| 356 | - sp:variable _:b9 | 364 | + sp:variable _:b10 |
| 357 | ]) | 365 | ]) |
| 358 | ] ; | 366 | ] ; |
| 359 | spin:constraint | 367 | spin:constraint |
| ... | @@ -451,29 +459,29 @@ rhspin:wellBoreByName | ... | @@ -451,29 +459,29 @@ rhspin:wellBoreByName |
| 451 | rdfs:subClassOf spl:URIFunctions ; | 459 | rdfs:subClassOf spl:URIFunctions ; |
| 452 | spin:body | 460 | spin:body |
| 453 | [ rdf:type sp:Select ; | 461 | [ rdf:type sp:Select ; |
| 454 | - sp:resultVariables (_:b18) ; | 462 | + sp:resultVariables (_:b19) ; |
| 455 | sp:where ([ rdf:type sp:NamedGraph ; | 463 | sp:where ([ rdf:type sp:NamedGraph ; |
| 456 | sp:elements ([ rdf:type sp:Union ; | 464 | sp:elements ([ rdf:type sp:Union ; |
| 457 | - sp:elements (([ sp:object _:b19 ; | 465 | + sp:elements (([ sp:object _:b20 ; |
| 458 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; | 466 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; |
| 459 | - sp:subject _:b18 | 467 | + sp:subject _:b19 |
| 460 | ]) ([ rdf:type sp:Bind ; | 468 | ]) ([ rdf:type sp:Bind ; |
| 461 | sp:expression | 469 | sp:expression |
| 462 | [ rdf:type spif:replaceAll ; | 470 | [ rdf:type spif:replaceAll ; |
| 463 | - sp:arg1 _:b19 ; | 471 | + sp:arg1 _:b20 ; |
| 464 | sp:arg2 "/0" ; | 472 | sp:arg2 "/0" ; |
| 465 | sp:arg3 "/" | 473 | sp:arg3 "/" |
| 466 | ] ; | 474 | ] ; |
| 467 | - sp:variable _:b20 | 475 | + sp:variable _:b21 |
| 468 | - ] [ sp:object _:b20 ; | 476 | + ] [ sp:object _:b21 ; |
| 469 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; | 477 | sp:predicate <http://www.reportinghub.no/np/schema/npd#name> ; |
| 470 | - sp:subject _:b18 | 478 | + sp:subject _:b19 |
| 471 | ])) | 479 | ])) |
| 472 | ] [ sp:object <http://www.reportinghub.no/ep/schema/well#WellBore> ; | 480 | ] [ sp:object <http://www.reportinghub.no/ep/schema/well#WellBore> ; |
| 473 | sp:predicate rdf:type ; | 481 | sp:predicate rdf:type ; |
| 474 | - sp:subject _:b18 | 482 | + sp:subject _:b19 |
| 475 | ]) ; | 483 | ]) ; |
| 476 | - sp:graphNameNode <http://www.reportinghub.no/np/data/npd> | 484 | + sp:graphNameNode npdata:npd |
| 477 | ]) | 485 | ]) |
| 478 | ] ; | 486 | ] ; |
| 479 | spin:constraint | 487 | spin:constraint |
| ... | @@ -510,53 +518,56 @@ rhspin:wellByName | ... | @@ -510,53 +518,56 @@ rhspin:wellByName |
| 510 | ] ; | 518 | ] ; |
| 511 | spin:returnType <http://www.reportinghub.no/ep/schema/well#Well> . | 519 | spin:returnType <http://www.reportinghub.no/ep/schema/well#Well> . |
| 512 | 520 | ||
| 513 | -_:b20 | 521 | +_:b2 sp:varName "wellBoreId"^^xsd:string . |
| 522 | + | ||
| 523 | +_:b1 sp:varName "wellBoreName"^^xsd:string . | ||
| 524 | + | ||
| 525 | +_:b3 sp:varName "wellBore"^^xsd:string . | ||
| 526 | + | ||
| 527 | +_:b21 | ||
| 514 | sp:varName "str"^^xsd:string . | 528 | sp:varName "str"^^xsd:string . |
| 515 | 529 | ||
| 516 | -_:b19 | 530 | +_:b20 |
| 517 | sp:varName "wellBoreName"^^xsd:string . | 531 | sp:varName "wellBoreName"^^xsd:string . |
| 518 | 532 | ||
| 519 | -_:b18 | 533 | +_:b19 |
| 520 | sp:varName "wellBore"^^xsd:string . | 534 | sp:varName "wellBore"^^xsd:string . |
| 521 | 535 | ||
| 522 | -_:b17 | 536 | +_:b18 |
| 523 | sp:varName "t4"^^xsd:string . | 537 | sp:varName "t4"^^xsd:string . |
| 524 | 538 | ||
| 525 | -_:b16 | 539 | +_:b17 |
| 526 | sp:varName "t3"^^xsd:string . | 540 | sp:varName "t3"^^xsd:string . |
| 527 | 541 | ||
| 528 | -_:b15 | 542 | +_:b16 |
| 529 | sp:varName "t2"^^xsd:string . | 543 | sp:varName "t2"^^xsd:string . |
| 530 | 544 | ||
| 531 | -_:b14 | 545 | +_:b15 |
| 532 | sp:varName "t1"^^xsd:string . | 546 | sp:varName "t1"^^xsd:string . |
| 533 | 547 | ||
| 534 | -_:b13 | 548 | +_:b14 |
| 535 | sp:varName "t0b"^^xsd:string . | 549 | sp:varName "t0b"^^xsd:string . |
| 536 | 550 | ||
| 537 | -_:b12 | 551 | +_:b13 |
| 538 | sp:varName "t0a"^^xsd:string . | 552 | sp:varName "t0a"^^xsd:string . |
| 539 | 553 | ||
| 540 | -_:b11 | 554 | +_:b12 |
| 541 | sp:varName "s2"^^xsd:string . | 555 | sp:varName "s2"^^xsd:string . |
| 542 | 556 | ||
| 543 | -_:b10 | 557 | +_:b11 |
| 544 | sp:varName "s1"^^xsd:string . | 558 | sp:varName "s1"^^xsd:string . |
| 545 | 559 | ||
| 546 | -_:b9 sp:varName "normalizedStr"^^xsd:string . | 560 | +_:b10 |
| 547 | - | 561 | + sp:varName "normalizedStr"^^xsd:string . |
| 548 | -_:b8 sp:varName "endDate"^^xsd:string . | ||
| 549 | - | ||
| 550 | -_:b7 sp:varName "startDate"^^xsd:string . | ||
| 551 | 562 | ||
| 552 | -_:b6 sp:varName "licence"^^xsd:string . | 563 | +_:b9 sp:varName "endDate"^^xsd:string . |
| 553 | 564 | ||
| 554 | -_:b5 sp:varName "share"^^xsd:string . | 565 | +_:b8 sp:varName "startDate"^^xsd:string . |
| 555 | 566 | ||
| 556 | -_:b4 sp:varName "nowDate"^^xsd:string . | 567 | +_:b7 sp:varName "licence"^^xsd:string . |
| 557 | 568 | ||
| 558 | -_:b3 sp:varName "wellBore"^^xsd:string . | 569 | +_:b6 sp:varName "share"^^xsd:string . |
| 559 | 570 | ||
| 560 | -_:b2 sp:varName "wellBore"^^xsd:string . | 571 | +_:b5 sp:varName "nowDate"^^xsd:string . |
| 561 | 572 | ||
| 562 | -_:b1 sp:varName "wellBoreName"^^xsd:string . | 573 | +_:b4 sp:varName "wellBore"^^xsd:string . | ... | ... |
-
Please register or login to post a comment