PREFIX parameter: <http://www.ontologydesignpatterns.org/cp/owl/parameter.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

parameter:Parameter a rdfs:Class ;
  rdfs:label "Parameter"@en , "Parametro"@it ;
  rdfs:comment """A Concept that classifies something having a certain value, e.g. 'High' can be said of people taller than 185 cm.
However, in order to formally represent this constraint, we need to add an anonymous type to a parameter instance, using a property that convey the semantics of the parameter, e.g.:
High rdf:type Person and (some hasHeight (Height and (oneOf isTallerThan 185) and (oneOf hasUnitOfMeasure centimeter)))""" ;
  rdfs:subClassOf parameter:Concept .

parameter:hasParameterDataValue a rdf:Property ;
  rdfs:label "has parameter data value"@en , "ha valore"@it ;
  rdfs:comment """Parametrizes values from a datatype. For example, a Parameter AgeForDriving hasParameterDataValue 18 on datatype xsd:int, in the Italian traffic code. In this example, AgeForDriving isDefinedIn the Norm ItalianTrafficCodeAgeDriving.
More complex parametrization requires workarounds. E.g. AgeRangeForDrugUsage could parametrize data value: 14 to 50 on the datatype: xsd:int. Since complex datatypes are not allowed in OWL1.0, a solution to this can only work by creating two 'sub-parameters': MinimumAgeRangeForDrugUsage (that hasParameterDataValue 14) and MaximumAgeRangeForDrugUsage (that hasParameterDataValue 50), which are components of the main Parameter AgeRangeForDrugUsage.
Ordering on subparameters can be created by using or specializing the object property 'precedes'.""" ;
  rdfs:domain parameter:Parameter ;
  rdfs:range <https://w3id.org/linkml/Any> .

parameter:isParameterFor a rdf:Property ;
  rdfs:label "is parameter for"@en , "è un parametro per"@it ;
  rdfs:comment "A Concept can have a Parameter that constrains the attributes that a classified Entity can have in a certain Situation, e.g. a 4WheelDriver Role definedIn the ItalianTrafficLaw has a MinimumAge parameter on the Amount 16." ;
  rdfs:domain parameter:Parameter ;
  rdfs:range parameter:Concept .

parameter:hasParameter a rdf:Property ;
  rdfs:label "has parameter"@en , "ha parametro"@it ;
  rdfs:comment "A Concept can have a Parameter that constrains the attributes that a classified Entity can have in a certain Situation, e.g. a 4WheelDriver Role definedIn the ItalianTrafficLaw has a MinimumAge parameter on the Amount 16." ;
  rdfs:domain parameter:Concept ;
  rdfs:range parameter:Parameter .

parameter:Concept a rdfs:Class ;
  rdfs:label "Concept"@en , "Concetto"@it ;
  rdfs:comment """A concept is a SocialObject, and isDefinedIn a Description . 
Once defined, a Concept can be used in other descriptions. 
The classifies relation relates concepts to entities at some time""" .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object" .
