# Four roles and categories, each constrained by the numeric limit something must meet
# to fall under it: the minimum age for driving a car or riding a moped, the height at
# which a person counts as tall, and the haemoglobin level required to donate blood.

@prefix parameter: <http://www.ontologydesignpatterns.org/cp/owl/parameter.owl#> .
@prefix ex: <https://w3id.org/ontoboard/example/parameter#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:CarDriver a owl:NamedIndividual , parameter:Concept ;
    rdfs:label "car driver, as defined by the Italian traffic code" ;
    parameter:hasParameter ex:MinimumAgeForDriving .

ex:MinimumAgeForDriving a owl:NamedIndividual , parameter:Parameter ;
    rdfs:label "minimum age for driving a car: 18 years" ;
    parameter:hasParameterDataValue 18 .

ex:MopedRider a owl:NamedIndividual , parameter:Concept ;
    rdfs:label "moped rider, as defined by the Italian traffic code" ;
    parameter:hasParameter ex:MinimumAgeForMopedRiding .

ex:MinimumAgeForMopedRiding a owl:NamedIndividual , parameter:Parameter ;
    rdfs:label "minimum age for riding a moped: 16 years" ;
    parameter:hasParameterDataValue 16 .

ex:TallPerson a owl:NamedIndividual , parameter:Concept ;
    rdfs:label "tall person" ;
    parameter:hasParameter ex:MinimumHeightForTall .

ex:MinimumHeightForTall a owl:NamedIndividual , parameter:Parameter ;
    rdfs:label "minimum height for counting as tall: 185 centimetres" ;
    parameter:hasParameterDataValue 185 .

ex:BloodDonor a owl:NamedIndividual , parameter:Concept ;
    rdfs:label "eligible blood donor" ;
    parameter:hasParameter ex:MinimumHaemoglobinForDonation .

ex:MinimumHaemoglobinForDonation a owl:NamedIndividual , parameter:Parameter ;
    rdfs:label "minimum haemoglobin for donating blood: 12.5 grams per decilitre" ;
    parameter:hasParameterDataValue "12.5"^^xsd:decimal .

# Only one direction of each inverse pair is asserted: hasParameter/isParameterFor. A reasoner adds the other.
