Skip to content

Commit 26cfa50

Browse files
committed
feat: add criteria model restrictions
1 parent 4c13d3c commit 26cfa50

2 files changed

Lines changed: 144 additions & 77 deletions

File tree

agora/agora.ttl

Lines changed: 143 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
<http://onto.vaimee.com/agora#> rdf:type owl:Ontology ;
2323
owl:versionIRI <http://onto.vaimee.com/agora/1.0.21#> ;
24-
owl:imports <http://onto.vaimee.com/fsm/1.0.19> ,
24+
owl:imports <http://onto.vaimee.com/fsm/1.0.20> ,
2525
<http://www.opengis.net/ont/geosparql> ,
2626
<http://www.w3.org/2006/time#2016> ,
2727
<http://www.w3.org/ns/prov-o-20130430> ,
@@ -82,6 +82,10 @@ skos:relatedMatch rdf:type owl:AnnotationProperty .
8282
shacl:datatype rdf:type owl:AnnotationProperty .
8383

8484

85+
### http://www.w3.org/ns/shacl#lessThan
86+
shacl:lessThan rdf:type owl:AnnotationProperty .
87+
88+
8589
### http://www.w3.org/ns/shacl#maxCount
8690
shacl:maxCount rdf:type owl:AnnotationProperty .
8791

@@ -140,23 +144,22 @@ foaf:member rdf:type owl:AnnotationProperty .
140144
rdfs:range :Crop .
141145

142146

143-
### http://onto.vaimee.com/agora#hasCropCycle
144-
:hasCropCycle rdf:type owl:ObjectProperty ;
145-
rdfs:domain :Crop ;
146-
rdfs:range :CropCycle .
147+
### http://onto.vaimee.com/agora#hasCropCycleModel
148+
:hasCropCycleModel rdf:type owl:ObjectProperty ;
149+
rdfs:domain :CRITERIA1D ;
150+
rdfs:range criteria:CropCycle .
147151

148152

149-
### http://onto.vaimee.com/agora#hasIrrigation
150-
:hasIrrigation rdf:type owl:ObjectProperty ;
151-
rdfs:domain :IrrigationModel ;
152-
rdfs:range :Irrigation .
153+
### http://onto.vaimee.com/agora#hasIrrigationModel
154+
:hasIrrigationModel rdf:type owl:ObjectProperty ;
155+
rdfs:domain :CRITERIA1D ;
156+
rdfs:range criteria:Irrigation .
153157

154158

155-
### http://onto.vaimee.com/agora#hasRootDevelopment
156-
:hasRootDevelopment rdf:type owl:ObjectProperty ;
157-
rdfs:subPropertyOf owl:topObjectProperty ;
158-
rdfs:domain :Crop ;
159-
rdfs:range :RootDevelopment .
159+
### http://onto.vaimee.com/agora#hasRootDevelopmentModel
160+
:hasRootDevelopmentModel rdf:type owl:ObjectProperty ;
161+
rdfs:domain :CRITERIA1D ;
162+
rdfs:range criteria:RootDevelopment .
160163

161164

162165
### http://onto.vaimee.com/agora#hasSoil
@@ -189,29 +192,7 @@ foaf:member rdf:type owl:AnnotationProperty .
189192
### http://onto.vaimee.com/agora/criteria#hasCrop
190193
criteria:hasCrop rdf:type owl:ObjectProperty ;
191194
rdfs:subPropertyOf :hasCrop ;
192-
rdfs:domain criteria:Irrigation ;
193-
rdfs:range criteria:Crop .
194-
195-
196-
### http://onto.vaimee.com/agora/criteria#hasCropCycle
197-
criteria:hasCropCycle rdf:type owl:ObjectProperty ;
198-
rdfs:subPropertyOf :hasCropCycle ;
199-
rdfs:domain criteria:Irrigation ;
200-
rdfs:range criteria:CropCycle .
201-
202-
203-
### http://onto.vaimee.com/agora/criteria#hasIrrigation
204-
criteria:hasIrrigation rdf:type owl:ObjectProperty ;
205-
rdfs:subPropertyOf :hasIrrigation ;
206-
rdfs:domain criteria:Irrigation ;
207-
rdfs:range criteria:Irrigation .
208-
209-
210-
### http://onto.vaimee.com/agora/criteria#hasRootDevelopment
211-
criteria:hasRootDevelopment rdf:type owl:ObjectProperty ;
212-
rdfs:subPropertyOf :hasRootDevelopment ;
213-
rdfs:domain criteria:Irrigation ;
214-
rdfs:range criteria:RootDevelopment .
195+
rdfs:domain criteria:Irrigation .
215196

216197

217198
#################################################################
@@ -271,7 +252,7 @@ criteria:hasRootDevelopment rdf:type owl:ObjectProperty ;
271252
### http://onto.vaimee.com/agora/criteria#computeLateralDrainage
272253
criteria:computeLateralDrainage rdf:type owl:DatatypeProperty ;
273254
rdfs:subPropertyOf owl:topDataProperty ;
274-
rdfs:domain criteria:Irrigation ;
255+
rdfs:domain :CRITERIA1D ;
275256
rdfs:range xsd:boolean .
276257

277258

@@ -413,7 +394,7 @@ criteria:maxHeightSurfacePuddle rdf:type owl:DatatypeProperty ;
413394
### http://onto.vaimee.com/agora/criteria#numericalSolution
414395
criteria:numericalSolution rdf:type owl:DatatypeProperty ;
415396
rdfs:subPropertyOf owl:topDataProperty ;
416-
rdfs:domain criteria:Irrigation ;
397+
rdfs:domain :CRITERIA1D ;
417398
rdfs:range xsd:boolean .
418399

419400

@@ -442,21 +423,21 @@ criteria:psiLeaf rdf:type owl:DatatypeProperty ;
442423
### http://onto.vaimee.com/agora/criteria#rawFraction
443424
criteria:rawFraction rdf:type owl:DatatypeProperty ;
444425
rdfs:subPropertyOf owl:topDataProperty ;
445-
rdfs:domain criteria:Crop ;
426+
rdfs:domain criteria:CropCycle ;
446427
rdfs:range xsd:decimal .
447428

448429

449430
### http://onto.vaimee.com/agora/criteria#restartDate
450431
criteria:restartDate rdf:type owl:DatatypeProperty ;
451432
rdfs:subPropertyOf owl:topDataProperty ;
452-
rdfs:domain criteria:Irrigation ;
433+
rdfs:domain :CRITERIA1D ;
453434
rdfs:range xsd:dateTime .
454435

455436

456437
### http://onto.vaimee.com/agora/criteria#restartState
457438
criteria:restartState rdf:type owl:DatatypeProperty ;
458439
rdfs:subPropertyOf owl:topDataProperty ;
459-
rdfs:domain criteria:Irrigation ;
440+
rdfs:domain :CRITERIA1D ;
460441
rdfs:range xsd:boolean .
461442

462443

@@ -491,35 +472,35 @@ criteria:rootShapeDeformation rdf:type owl:DatatypeProperty ;
491472
### http://onto.vaimee.com/agora/criteria#saveDate
492473
criteria:saveDate rdf:type owl:DatatypeProperty ;
493474
rdfs:subPropertyOf owl:topDataProperty ;
494-
rdfs:domain criteria:Irrigation ;
475+
rdfs:domain :CRITERIA1D ;
495476
rdfs:range xsd:dateTime .
496477

497478

498479
### http://onto.vaimee.com/agora/criteria#saveState
499480
criteria:saveState rdf:type owl:DatatypeProperty ;
500481
rdfs:subPropertyOf owl:topDataProperty ;
501-
rdfs:domain criteria:Irrigation ;
482+
rdfs:domain :CRITERIA1D ;
502483
rdfs:range xsd:boolean .
503484

504485

505486
### http://onto.vaimee.com/agora/criteria#slope
506487
criteria:slope rdf:type owl:DatatypeProperty ;
507488
rdfs:subPropertyOf owl:topDataProperty ;
508-
rdfs:domain criteria:Irrigation ;
489+
rdfs:domain :CRITERIA1D ;
509490
rdfs:range xsd:decimal .
510491

511492

512493
### http://onto.vaimee.com/agora/criteria#sowingDoy
513494
criteria:sowingDoy rdf:type owl:DatatypeProperty ;
514495
rdfs:subPropertyOf owl:topDataProperty ;
515-
rdfs:domain criteria:Crop ;
496+
rdfs:domain criteria:CropCycle ;
516497
rdfs:range xsd:integer .
517498

518499

519500
### http://onto.vaimee.com/agora/criteria#stressTolerance
520501
criteria:stressTolerance rdf:type owl:DatatypeProperty ;
521502
rdfs:subPropertyOf owl:topDataProperty ;
522-
rdfs:domain criteria:Crop ;
503+
rdfs:domain criteria:CropCycle ;
523504
rdfs:range xsd:decimal .
524505

525506

@@ -537,32 +518,32 @@ criteria:upperThermalThreshold rdf:type owl:DatatypeProperty ;
537518
rdfs:range xsd:decimal .
538519

539520

521+
### http://onto.vaimee.com/agora/criteria#useWaterRetentionFitting
522+
criteria:useWaterRetentionFitting rdf:type owl:DatatypeProperty ;
523+
rdfs:subPropertyOf owl:topDataProperty ;
524+
rdfs:domain :CRITERIA1D ;
525+
rdfs:range xsd:boolean .
526+
527+
540528
### http://onto.vaimee.com/agora/criteria#useWaterTable
541529
criteria:useWaterTable rdf:type owl:DatatypeProperty ;
542530
rdfs:subPropertyOf owl:topDataProperty ;
543-
rdfs:domain criteria:Irrigation ;
531+
rdfs:domain :CRITERIA1D ;
544532
rdfs:range xsd:boolean .
545533

546534

547-
### http://onto.vaimee.com/agora/criteria#waterContent
548-
criteria:waterContent rdf:type owl:DatatypeProperty ;
549-
rdfs:subPropertyOf owl:topDataProperty ;
550-
rdfs:domain criteria:Irrigation ;
551-
rdfs:range xsd:string .
552-
553-
554-
### http://onto.vaimee.com/agora/criteria#waterPotential
555-
criteria:waterPotential rdf:type owl:DatatypeProperty ;
556-
rdfs:subPropertyOf owl:topDataProperty ;
557-
rdfs:domain criteria:Irrigation ;
558-
rdfs:range xsd:string .
535+
### http://onto.vaimee.com/agora/criteria#waterContentDepth
536+
criteria:waterContentDepth rdf:type owl:DatatypeProperty ;
537+
rdfs:subPropertyOf owl:topDataProperty ;
538+
rdfs:domain :CRITERIA1D ;
539+
rdfs:range xsd:string .
559540

560541

561-
### http://onto.vaimee.com/agora/criteria#waterRetentionFitting
562-
criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
563-
rdfs:subPropertyOf owl:topDataProperty ;
564-
rdfs:domain criteria:Irrigation ;
565-
rdfs:range xsd:boolean .
542+
### http://onto.vaimee.com/agora/criteria#waterPotentialDepth
543+
criteria:waterPotentialDepth rdf:type owl:DatatypeProperty ;
544+
rdfs:subPropertyOf owl:topDataProperty ;
545+
rdfs:domain :CRITERIA1D ;
546+
rdfs:range xsd:string .
566547

567548

568549
#################################################################
@@ -593,6 +574,26 @@ criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
593574
rdfs:label "Atmosphere" .
594575

595576

577+
### http://onto.vaimee.com/agora#CRITERIA1D
578+
:CRITERIA1D rdf:type owl:Class ;
579+
rdfs:subClassOf :Model ,
580+
[ rdf:type owl:Restriction ;
581+
owl:onProperty :hasCropCycleModel ;
582+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
583+
owl:onClass criteria:CropCycle
584+
] ,
585+
[ rdf:type owl:Restriction ;
586+
owl:onProperty :hasIrrigationModel ;
587+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
588+
owl:onClass criteria:Irrigation
589+
] ,
590+
[ rdf:type owl:Restriction ;
591+
owl:onProperty :hasRootDevelopmentModel ;
592+
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
593+
owl:onClass criteria:RootDevelopment
594+
] .
595+
596+
596597
### http://onto.vaimee.com/agora#Crop
597598
:Crop rdf:type owl:Class ;
598599
rdfs:subClassOf sosa:FeatureOfInterest ,
@@ -621,9 +622,9 @@ criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
621622
skos:closeMatch <http://aims.fao.org/aos/agrovoc/c_1972> .
622623

623624

624-
### http://onto.vaimee.com/agora#CropCycle
625-
:CropCycle rdf:type owl:Class ;
626-
rdfs:subClassOf :Model .
625+
### http://onto.vaimee.com/agora#CropCycleModel
626+
:CropCycleModel rdf:type owl:Class ;
627+
rdfs:subClassOf :Model .
627628

628629

629630
### http://onto.vaimee.com/agora#Field
@@ -671,6 +672,16 @@ criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
671672
sosa:Sensor .
672673

673674

675+
### http://onto.vaimee.com/agora#ForecastWeatherObservation
676+
:ForecastWeatherObservation rdf:type owl:Class ;
677+
rdfs:subClassOf :WeatherObservation .
678+
679+
680+
### http://onto.vaimee.com/agora#HistoricalWeatherObservation
681+
:HistoricalWeatherObservation rdf:type owl:Class ;
682+
rdfs:subClassOf :WeatherObservation .
683+
684+
674685
### http://onto.vaimee.com/agora#Irrigation
675686
:Irrigation rdf:type owl:Class ;
676687
rdfs:subClassOf sosa:Actuator .
@@ -686,9 +697,9 @@ criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
686697
rdfs:subClassOf sosa:Procedure .
687698

688699

689-
### http://onto.vaimee.com/agora#RootDevelopment
690-
:RootDevelopment rdf:type owl:Class ;
691-
rdfs:subClassOf :Model .
700+
### http://onto.vaimee.com/agora#RootDevelopmentModel
701+
:RootDevelopmentModel rdf:type owl:Class ;
702+
rdfs:subClassOf :Model .
692703

693704

694705
### http://onto.vaimee.com/agora#Soil
@@ -849,14 +860,14 @@ criteria:waterRetentionFitting rdf:type owl:DatatypeProperty ;
849860
sosa:Sensor .
850861

851862

852-
### http://onto.vaimee.com/agora/criteria#Crop
853-
criteria:Crop rdf:type owl:Class ;
854-
rdfs:subClassOf :Crop .
863+
### http://onto.vaimee.com/agora#WeatherObservation
864+
:WeatherObservation rdf:type owl:Class ;
865+
rdfs:subClassOf sosa:Observation .
855866

856867

857868
### http://onto.vaimee.com/agora/criteria#CropCycle
858869
criteria:CropCycle rdf:type owl:Class ;
859-
rdfs:subClassOf :CropCycle .
870+
rdfs:subClassOf :CropCycleModel .
860871

861872

862873
### http://onto.vaimee.com/agora/criteria#Irrigation
@@ -869,7 +880,7 @@ criteria:Irrigation rdf:type owl:Class ;
869880

870881
### http://onto.vaimee.com/agora/criteria#RootDevelopment
871882
criteria:RootDevelopment rdf:type owl:Class ;
872-
rdfs:subClassOf :RootDevelopment .
883+
rdfs:subClassOf :RootDevelopmentModel .
873884

874885

875886
### http://onto.vaimee.com/fsm#State
@@ -888,6 +899,23 @@ shacl:NodeShape rdf:type owl:Class .
888899
# Individuals
889900
#################################################################
890901

902+
### http://onto.vaimee.com/agora#SoilHorizonShape
903+
:SoilHorizonShape rdf:type owl:NamedIndividual ,
904+
shacl:NodeShape ;
905+
shacl:property [ shacl:datatype xsd:decimal ;
906+
shacl:lessThan :lowerDepth ;
907+
shacl:maxCount 1 ;
908+
shacl:minCount 1 ;
909+
shacl:path :upperDepth
910+
] ,
911+
[ shacl:datatype xsd:decimal ;
912+
shacl:maxCount 1 ;
913+
shacl:minCount 1 ;
914+
shacl:path :lowerDepth
915+
] ;
916+
shacl:targetClass :SoilHorizon .
917+
918+
891919
### http://onto.vaimee.com/agora#SoilTextureResultShape
892920
:SoilTextureResultShape rdf:type owl:NamedIndividual ,
893921
shacl:NodeShape ;
@@ -918,10 +946,48 @@ shacl:NodeShape rdf:type owl:Class .
918946
FILTER ((?clay + ?sand + ?silt) != 100)
919947
}
920948
"""
921-
] ;
949+
] ;
922950
shacl:targetClass :SoilTextureResult .
923951

924952

953+
### http://onto.vaimee.com/agora#HistoricalWeatherObservationShape
954+
:HistoricalWeatherObservationShape rdf:type owl:NamedIndividual ,
955+
shacl:NodeShape ;
956+
shacl:sparql [ shacl:message "Historical weather observations must have phenomenon time before result time." ;
957+
shacl:select """
958+
PREFIX sosa: <http://www.w3.org/ns/sosa/>
959+
PREFIX time: <http://www.w3.org/2006/time#>
960+
961+
SELECT $this
962+
WHERE {
963+
$this sosa:phenomenonTime/time:inXSDDateTime ?ptime ;
964+
sosa:resultTime ?resultTime .
965+
FILTER (?ptime >= ?resultTime)
966+
}
967+
"""
968+
] ;
969+
shacl:targetClass :HistoricalWeatherObservation .
970+
971+
972+
### http://onto.vaimee.com/agora#ForecastWeatherObservationShape
973+
:ForecastWeatherObservationShape rdf:type owl:NamedIndividual ,
974+
shacl:NodeShape ;
975+
shacl:sparql [ shacl:message "Forecast weather observations must have phenomenon time equal to or after result time." ;
976+
shacl:select """
977+
PREFIX sosa: <http://www.w3.org/ns/sosa/>
978+
PREFIX time: <http://www.w3.org/2006/time#>
979+
980+
SELECT $this
981+
WHERE {
982+
$this sosa:phenomenonTime/time:inXSDDateTime ?ptime ;
983+
sosa:resultTime ?resultTime .
984+
FILTER (?ptime < ?resultTime)
985+
}
986+
"""
987+
] ;
988+
shacl:targetClass :ForecastWeatherObservation .
989+
990+
925991
### http://onto.vaimee.com/agora#availableWater
926992
:availableWater rdf:type owl:NamedIndividual ,
927993
sosa:ObservableProperty ;

0 commit comments

Comments
 (0)