DavidStables (talk | contribs) (Replaced content with "== General approach == The information model language uses RDF triples as its basic grammar i.e. subject, predicate, and object with graph making up quadruples of an RDF d...") Tag: Replaced |
DavidStables (talk | contribs) No edit summary |
||
Line 27: | Line 27: | ||
This documentation is therefore a documentation of shapes. | This documentation is therefore a documentation of shapes. | ||
<br /> | <br /> | ||
== Basic shapes == | |||
These shapes are the meta classes of the named entities within the information model. | |||
{| class="wikitable" | |||
|+ | |||
!Shape | |||
!colspan="2"|Property | |||
!Card. | |||
!Value type | |||
!Comment | |||
|- | |||
|rowspan="2"|<span id="class_IrirRef">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23IriRef/ <span style="color:navy"> '''IrirRef'''</span>]</span> | |||
|colspan="4"| | |||
|A resource with an iri and name | |||
|- | |||
|colspan="2"|<span style="color:green">label</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The name of the entity | |||
|- | |||
|rowspan="6"|<span id="class_Entity shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23EntityShape/ <span style="color:navy"> '''Entity shape'''</span>]<br> (subtype of [[#class_IrirRef|IrirRef]])</span> | |||
|colspan="2"|<span style="color:green">targetClass</span>span title | |||
| | |||
|Fixed :<span title="An entity with an iri name and status">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Entity/ im:Entity]</span> | |||
|The super class and data model for all named resources in the model i.e. the data model of the entities that are labelled with iri label and status | |||
|- | |||
|colspan="2"|<span style="color:green">comment</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The description of the entity | |||
|- | |||
|colspan="2"|<span style="color:green">type</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The base type of the entity i.e. one of the high level entity types | |||
|- | |||
|colspan="2"|<span style="color:green">status</span> | |||
|1..1 | |||
|<span title="A status that is in active or active">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Status/ im:Status]</span> | |||
|The status of the entity being active, inactive, draft or unassigned | |||
|- | |||
|colspan="2"|<span style="color:green">scheme</span> | |||
|1..1 | |||
|<span title="Core graphs for core ontologies such as the health information model, Discovery and Snomed">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Graph/ im:Graph]</span> | |||
|The code scheme or graph which the entity belongs to | |||
|- | |||
|colspan="2"|<span style="color:green">subClassOf</span> | |||
|0..* | |||
|<span title="The super class and data model for all named resources in the model i.e. the data model of the entities that are labelled with iri label and status">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23EntityShape/ im:EntityShape]</span> | |||
|An entity that this entity inherits from, both semantically and structurally | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_IriAlias">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23IriAlias/ <span style="color:navy"> '''IriAlias'''</span>]<br> (subtype of [[#class_IrirRef|IrirRef]])</span> | |||
|colspan="4"| | |||
|An IRI with a name and an alias (for use as variables for reference | |||
|- | |||
|colspan="2"|<span style="color:green">alias</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The column name in a select clause for this property, or a variable used to reference the result set of the values matched | |||
|- | |||
|- | |||
|- | |||
|} | |||
== Query language shapes == | |||
These shapes form the query language DSL for retrieving data from the IM or health records. | |||
{| class="wikitable" | |||
|+ | |||
!Shape | |||
!colspan="2"|Property | |||
!Card. | |||
!Value type | |||
!Comment | |||
|- | |||
|rowspan="2"|<span id="class_QueryShape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23QueryShape/ <span style="color:navy"> '''QueryShape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="2"|<span style="color:green">targetClass</span>span title | |||
| | |||
|Fixed :<span title="The query definition for a stored query">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Query/ im:Query]</span> | |||
|A query that is stored as an entity in a query library | |||
|- | |||
|colspan="2"|<span style="color:green">query</span> | |||
|0..1 | |||
|<span title="A Query definition holding the logical definition of a query in a standard language">[[#class_QueryDefinition|QueryDefinition]]</span> | |||
|The query definition itself | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="7"|<span id="class_Query definition">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23QueryDefinition/ <span style="color:navy"> '''Query definition'''</span>]<br> (subtype of [[#class_ClauseHeading|ClauseHeading]])</span> | |||
|colspan="4"| | |||
|A Query definition holding the logical definition of a query in a standard language | |||
|- | |||
|colspan="2"|<span style="color:green">resultFormat</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Whether the result set is required flat select style json or a nested graphql json object style 'RELATIONAL' or 'OBJECT. Default is OBJECT | |||
|- | |||
|colspan="2"|<span style="color:green">usePrefixes</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|true if you want the results to use IRI prefixes | |||
|- | |||
|colspan="2"|<span style="color:green">activeOnly</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether only active entities are included in the match clauses or select clauses | |||
|- | |||
|rowspan="2"|or<br>1..1 | |||
|<span style="color:green">select</span> | |||
|1..1 | |||
|<span title="Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups">[[#class_SelectClause|SelectClause]]</span> | |||
|Select query clause logically similar to SQL/SPARQL select but with GraphQL nesting ability | |||
|- | |||
| | |||
<span style="color:green">ask</span> | |||
|0..1 | |||
|<span title="A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.Supports graph traversal filtering and inference for subsumption query">[[#class_MatchClause|MatchClause]]</span> | |||
|If the query is a boolean true or false use match clauses as an ask | |||
|- | |||
|colspan="2"|<span style="color:green">mainEntity</span> | |||
|0..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2Fns%2Fshacl%23NodeShape/ sh:NodeShape]</span> | |||
|The main entity to which all matches must be related e.g. Patient or organisation. i.e. the IRI of a data model entity (SHACL shape) | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_ClauseHeading">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23ClauseHeading/ <span style="color:navy"> '''ClauseHeading'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="4"| | |||
|General headings such as name description and alias | |||
|- | |||
|colspan="2"|<span style="color:green">alias</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|An alias or reference term that can be used throughout a query as shorthand for the result set | |||
|- | |||
|- | |||
|rowspan="12"|<span id="class_SelectClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23SelectClause/ <span style="color:navy"> '''SelectClause'''</span>]<br> (subtype of [[#class_ClauseHeading|ClauseHeading]])</span> | |||
|colspan="4"| | |||
|Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups | |||
|- | |||
|colspan="2"|<span style="color:green">count</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|If the query result is simply a sum of the main entities found. equivalent to COUNT(id) | |||
|- | |||
|rowspan="2"|or<br>0..1 | |||
|<span style="color:green">property</span> | |||
|1..* | |||
|<span title="">[[#class_PropertySelectClause|PropertySelectClause]]</span> | |||
|Information about a property or field to includein the results. Property select supports nesting with selects for the objects that may be values of the property | |||
|- | |||
| | |||
<span style="color:green">pathToTarget</span> | |||
|1..1 | |||
|<span title="Information about the target of a path query, including the IRI of the target and the number of hops processed.">[[#class_PathTargetClause|PathTargetClause]]</span> | |||
|Special function for path query. Information about the target entity when the query is looking to return paths between a source and a target. Both are likely to be passed in as parameters | |||
|- | |||
|colspan="2"|<span style="color:green">match</span> | |||
|0..* | |||
|<span title="A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.Supports graph traversal filtering and inference for subsumption query">[[#class_MatchClause|MatchClause]]</span> | |||
|The match pattern to which the select clause must comply. Equivalent to a where/filter in SPARQL and JOIN/WHERE in SQL | |||
|- | |||
|colspan="2"|<span style="color:green">distinct</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether the entity objects returned should be distinct | |||
|- | |||
|rowspan="3"|or<br>0..1 | |||
|<span style="color:green">entityType</span> | |||
|1..1 | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The entity type for instances this select clause operates on. Options include including subtypes. | |||
|- | |||
| | |||
<span style="color:green">entityId</span> | |||
|1..1 | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|An instance of an enttu for which this select clause operates. As in entity type, optionally to include subtypes, where the entity id is a concept | |||
|- | |||
| | |||
<span style="color:green">entityIn</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The consept set, value set, or query result set that forms the base population of instances on which the select clause operates. e.g. a parent cohort. | |||
|- | |||
|colspan="2"|<span style="color:green">groupBy</span> | |||
|0..* | |||
|<span title="">[[#class_PropertySelectClause|PropertySelectClause]]</span> | |||
|If the results need to be grouped, the grouping properties. | |||
|- | |||
|colspan="2"|<span style="color:green">orderLimit</span> | |||
|0..* | |||
|<span title="Orders the value of the property (property as represented by the iri and alias)">[[#class_OrderLimitClause|OrderLimitClause]]</span> | |||
|Ordering of instances via a property value and limiting th enumber returned. | |||
|- | |||
|colspan="2"|<span style="color:green">subselect</span> | |||
|0..* | |||
|<span title="Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups">[[#class_SelectClause|SelectClause]]</span> | |||
|For a query with column groups such as a list report, the select query for each group | |||
|- | |||
|- | |||
|rowspan="15"|<span id="class_MatchClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23MatchClause/ <span style="color:navy"> '''MatchClause'''</span>]<br> (subtype of [[#class_ClauseHeading|ClauseHeading]])</span> | |||
|colspan="4"| | |||
|A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.<br>Supports graph traversal filtering and inference for subsumption query | |||
|- | |||
|colspan="2"|<span style="color:green">pathTo</span> | |||
|0..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|A convenient way of traversing properties and objects to get to the match object, avoiding excessive nesting.<br>The properties are listed and thus traversed in strict order | |||
|- | |||
|rowspan="2"|or<br>0..1 | |||
|<span style="color:green">or</span> | |||
|2..* | |||
|<span title="A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.Supports graph traversal filtering and inference for subsumption query">[[#class_MatchClause|MatchClause]]</span> | |||
|Boolean operator OR on subclauses | |||
|- | |||
| | |||
<span style="color:green">and</span> | |||
|2..* | |||
|<span title="A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.Supports graph traversal filtering and inference for subsumption query">[[#class_MatchClause|MatchClause]]</span> | |||
|Boolean operator AND on subclauses | |||
|- | |||
|rowspan="2"|or<br>0..1 | |||
|<span style="color:green">entityType</span> | |||
|1..1 | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The entity type that matched instances must be (including subtypes). Options include including subtypes. | |||
|- | |||
| | |||
<span style="color:green">entityId</span> | |||
|1..1 | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|An instance of an entitu for which this match clause operates on. As in entity type, optionally to include subtypes, where the entity id is a concept | |||
|- | |||
|rowspan="2"|or<br>0..1 | |||
|<span style="color:green">entityInSet</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The concept set, value set, or query result set that the instances must be in to match.<br>on which the select clause operates. e.g. a parent cohort. | |||
|- | |||
| | |||
<span style="color:green">entityNotInSet</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The concept set, value set, or query result set that the instances must NOT be in to match.<br>on which the select clause operates. e.g. a parent cohort. | |||
|- | |||
|colspan="2"|<span style="color:green">graph</span> | |||
|0..1 | |||
|<span title="Core graphs for core ontologies such as the health information model, Discovery and Snomed">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Graph/ im:Graph]</span> | |||
|The iri of a graph if the query is limied to a particular data set | |||
|- | |||
|colspan="2"|<span style="color:green">property</span> | |||
|0..* | |||
|<span title="A property (as a concept reference) and value filter supporting ranges sets and functions,As a result of the concept references, supports sub properties as well as inferred values">[[#class_PropertyValueClause|PropertyValueClause]]</span> | |||
|Properties and their values required to match (or not match), including any nesting of objects (joins).<br>The default assumption is the AND operator on the properties. Use orProperty for or operator | |||
|- | |||
|colspan="2"|<span style="color:green">orProperty</span> | |||
|2..* | |||
|<span title="A property (as a concept reference) and value filter supporting ranges sets and functions,As a result of the concept references, supports sub properties as well as inferred values">[[#class_PropertyValueClause|PropertyValueClause]]</span> | |||
|Properties and their values one of which is required to match (or not match), including any nesting of objects (joins). | |||
|- | |||
|colspan="2"|<span style="color:green">notExist</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Negation indicator for this entire clause. i.e. for the instance to be included it must NOT match. | |||
|- | |||
|colspan="2"|<span style="color:green">orderLimit</span> | |||
|0..1 | |||
|<span title="Orders the value of the property (property as represented by the iri and alias)">[[#class_OrderLimitClause|OrderLimitClause]]</span> | |||
|Ability to order and limit the match before the select or matchstatement operates.<br> Crucially, this is processed before the application of a test or check, enabling things like latest or earliest, max or min | |||
|- | |||
|colspan="2"|<span style="color:green">testProperty</span> | |||
|0..* | |||
|<span title="A property (as a concept reference) and value filter supporting ranges sets and functions,As a result of the concept references, supports sub properties as well as inferred values">[[#class_PropertyValueClause|PropertyValueClause]]</span> | |||
|Further test applied to the result of an ordered limited match.<br> The rest of the match clause then becomes a sub select query on which these tests operate. Implicit operator is AND | |||
|- | |||
|colspan="2"|<span style="color:green">displayText</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Optional text for display in query viewer if dfferent from the match clause name | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="8"|<span id="class_PropertySelectClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23PropertySelectClause/ <span style="color:navy"> '''PropertySelectClause'''</span>]<br> (subtype of [[#class_ConceptReference|ConceptReference]])</span> | |||
|colspan="4"| | |||
|null | |||
|- | |||
|rowspan="3"|or<br>0..1 | |||
|<span style="color:green">sum</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether the result is a summation of this property's values | |||
|- | |||
| | |||
<span style="color:green">average</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether the result is an average of this property's values | |||
|- | |||
| | |||
<span style="color:green">max</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether the result is the maximum of this property's values | |||
|- | |||
|colspan="2"|<span style="color:green">select</span> | |||
|0..1 | |||
|<span title="Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups">[[#class_SelectClause|SelectClause]]</span> | |||
|Nested select clause for graphql style results format | |||
|- | |||
|colspan="2"|<span style="color:green">inverseOf</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Indicates if true that the selected property is an inverse relationship with the target object | |||
|- | |||
|colspan="2"|<span style="color:green">function</span> | |||
|0..1 | |||
|<span title="A function definition with optional parameters">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Function/ im:Function]</span> | |||
|The iri of a function indicating that the result is the result of a function operating on the property values, and any arguments passed in | |||
|- | |||
|colspan="2"|<span style="color:green">argument</span> | |||
|0..* | |||
|<span title="A named parameter and a value for passing into a function">[[#class_Argument|Argument]]</span> | |||
|Arguments to pass into the function | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_PathTargetClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23PathTargetClause/ <span style="color:navy"> '''PathTargetClause'''</span>]<br> (subtype of [[#class_IrirRef|IrirRef]])</span> | |||
|colspan="4"| | |||
|Information about the target of a path query, including the IRI of the target and the number of hops processed. | |||
|- | |||
|colspan="2"|<span style="color:green">depth</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|How many hops to be taken in the graph between source and target | |||
|- | |||
|- | |||
|rowspan="4"|<span id="class_ConceptReference">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23ConceptReference/ <span style="color:navy"> '''ConceptReference'''</span>]<br> (subtype of [[#class_IriAlias|IriAlias]])</span> | |||
|colspan="4"| | |||
|null | |||
|- | |||
|colspan="2"|<span style="color:green">includeSubtypes</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether to include the subtypes of the entites selected or matched | |||
|- | |||
|colspan="2"|<span style="color:green">includeSupertypes</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether to include the supertypes of the entity in a match clause. Used for ascending the hierarch to look for properties inherited | |||
|- | |||
|colspan="2"|<span style="color:green">excludeSelf</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Whether to exclude this entity when either include supbtypes or include suprtypes is set. Rarely used but sometimes found in ECL definitions | |||
|- | |||
|- | |||
|rowspan="4"|<span id="class_OrderLimitClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23OrderLimitClause/ <span style="color:navy"> '''OrderLimitClause'''</span>]</span> | |||
|colspan="4"| | |||
|Orders the value of the property (property as represented by the iri and alias) | |||
|- | |||
|colspan="2"|<span style="color:green">orderBy</span> | |||
|1..1 | |||
|<span title="An IRI with a name and an alias (for use as variables for reference">[[#class_IriAlias|IriAlias]]</span> | |||
|The property or property variable to order the results by | |||
|- | |||
|colspan="2"|<span style="color:green">direction</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|ASCENDING or DESCENDING to indicate the order direction | |||
|- | |||
|colspan="2"|<span style="color:green">limit</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|The count of instances to return after ordering | |||
|- | |||
|- | |||
|- | |||
|rowspan="15"|<span id="class_PropertyValueClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23PropertyValueClause/ <span style="color:navy"> '''PropertyValueClause'''</span>]<br> (subtype of [[#class_ConceptReference|ConceptReference]])</span> | |||
|colspan="4"| | |||
|A property (as a concept reference) and value filter supporting ranges sets and functions,<br>As a result of the concept references, supports sub properties as well as inferred values | |||
|- | |||
|colspan="2"|<span style="color:green">pathTo</span> | |||
|0..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|A convenient way of traversing properties and objects to get to a property, avoiding excessive nesting.<br>The properties are listed and thus traversed in strict order | |||
|- | |||
|colspan="2"|<span style="color:green">inverseOf</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Tests the property as an inverse property (inbound relationship) | |||
|- | |||
|colspan="2"|<span style="color:green">notExist</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|The property match must not exist. This is negatation at a more granular level than the match clause.<br>For example to test for a null field or absent property | |||
|- | |||
|colspan="2"|<span style="color:green">optional</span> | |||
|0..1 | |||
|<span title="">[https://www.w3.org/TR/xmlschema-2/#boolean xsd:boolean]</span> | |||
|Optional match for this property, used to enable IF a present then A must have X,Y.<br> N.B for SPARQL experts the OPTIONAL is generally generated automatically from SELECT, so optional need only be set when a test is to be applied to a linked object | |||
|- | |||
|colspan="2"|<span style="color:green">function</span> | |||
|1..1 | |||
|<span title="A function used in a query consisting of the function iri and one or more arguments to pass in at run time">[[#class_FunctionClause|FunctionClause]]</span> | |||
|A function that operates on the property value (and other parameters) prior to a compare or range or inclusion test. For example a time difference function operating on the date and a reference date.<br>Note that properties that ARE functions do not need functions included for example age. For these simply supply the arguments. | |||
|- | |||
|colspan="2"|<span style="color:green">argument</span> | |||
|0..1 | |||
|<span title="A named parameter and a value for passing into a function">[[#class_Argument|Argument]]</span> | |||
|Arguments to pass into a function when the property is a function property.<br>Note that if the test is a function then the argument list would be in the function clause | |||
|- | |||
|rowspan="7"|or<br>0..1 | |||
|<span style="color:green">value</span> | |||
|1..1 | |||
|<span title="Tests a value, whether equal, greater than, less than etc.">[[#class_CompareClause|CompareClause]]</span> | |||
|If testing a property value as equal greater than ete. use compare | |||
|- | |||
| | |||
<span style="color:green">inSet</span> | |||
|1..* | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The value of the property must be in the concept set IRI.<br>For teesting simple lists or single concepts use isConcept | |||
|- | |||
| | |||
<span style="color:green">notInSet</span> | |||
|1..* | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The value of the property must NOT be in the concept set IRI.<br> Note that this is not negation of the entire match, only the negation of this entry instance when tested. Equivalent to SPARQL filter not in.<br> For testing simple lists of concepts use isNotConcept | |||
|- | |||
| | |||
<span style="color:green">isConcept</span> | |||
|1..* | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The value of the property be this concept (and otionally its sub types).<br> Used for inline sets or single concepts | |||
|- | |||
| | |||
<span style="color:green">isNotConcept</span> | |||
|1..* | |||
|<span title="">[[#class_ConceptReference|ConceptReference]]</span> | |||
|The value of the property must NOT be this concept (and otionally its sub types).<br> Used for inline sets or single concepts.<br>Note that this is not negation of the entire match, only the negation of this entry instance when tested. Equivalent to SPARQL filter not in. | |||
|- | |||
| | |||
<span style="color:green">inRange</span> | |||
|1..1 | |||
|<span title="A range for use in property value testing">[[#class_RangeClause|RangeClause]]</span> | |||
|Test foe a value being between two absolute or relative values | |||
|- | |||
| | |||
<span style="color:green">valueMatch</span> | |||
|1..1 | |||
|<span title="A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql.Supports graph traversal filtering and inference for subsumption query">[[#class_MatchClause|MatchClause]]</span> | |||
|The match clause operating on the property value object.<br> Equivalent to a join in SQL or '.' in sparql | |||
|- | |||
|colspan="2"|<span style="color:green">displayText</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Optional text for display in query viewer if dfferent from the match clause name | |||
|- | |||
|- | |||
|- | |||
|rowspan="6"|<span id="class_Argument">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Argument/ <span style="color:navy"> '''Argument'''</span>]</span> | |||
|colspan="4"| | |||
|A named parameter and a value for passing into a function | |||
|- | |||
|colspan="2"|<span style="color:green">parameter</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Parameter name for a function or the parameter name for an argument | |||
|- | |||
|rowspan="4"|or<br>1..1 | |||
|<span style="color:green">valueData</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Vaue that is a literal such as a string or number | |||
|- | |||
| | |||
<span style="color:green">valueVariable</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|argumenT value which is a variable name to be resolved at run time | |||
|- | |||
| | |||
<span style="color:green">valueSelect</span> | |||
|1..1 | |||
|<span title="Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups">[[#class_SelectClause|SelectClause]]</span> | |||
|Argument value that is the result of a select query | |||
|- | |||
| | |||
<span style="color:green">valueIri</span> | |||
|1..1 | |||
|<span title="A resource with an iri and name">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23IriRef/ im:IriRef]</span> | |||
|Argument value that is an iri | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_FunctionClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23FunctionClause/ <span style="color:navy"> '''FunctionClause'''</span>]<br> (subtype of [[#class_IrirRef|IrirRef]])</span> | |||
|colspan="4"| | |||
|A function used in a query consisting of the function iri and one or more arguments to pass in at run time | |||
|- | |||
|colspan="2"|<span style="color:green">argument</span> | |||
|0..* | |||
|<span title="A named parameter and a value for passing into a function">[[#class_Argument|Argument]]</span> | |||
|Arguments to pass into the function. They should match the parameter definitions of the function | |||
|- | |||
|- | |||
|rowspan="5"|<span id="class_CompareClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23CompareClause/ <span style="color:navy"> '''CompareClause'''</span>]</span> | |||
|colspan="4"| | |||
|Tests a value, whether equal, greater than, less than etc. | |||
|- | |||
|colspan="2"|<span style="color:green">comparison</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Comparison operators : EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, NOT_EQUAL | |||
|- | |||
|rowspan="3"|or<br>1..1 | |||
|<span style="color:green">valueData</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The value to compare against. This is a string which will be cast to a number or date, depending on the data type of the property value | |||
|- | |||
| | |||
<span style="color:green">valueVariable</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The variable (alias) to compare against. The variable may be an argument to the query (e.g. $reference date or an alias in this query or another query. Use the $ prefix to make it clear | |||
|- | |||
| | |||
<span style="color:green">valueSelect</span> | |||
|1..1 | |||
|<span title="Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups">[[#class_SelectClause|SelectClause]]</span> | |||
|The result to compare the property value against is derived from a select sub query | |||
|- | |||
|- | |||
|rowspan="3"|<span id="class_RangeClause">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23RangeClause/ <span style="color:navy"> '''RangeClause'''</span>]</span> | |||
|colspan="4"| | |||
|A range for use in property value testing | |||
|- | |||
|colspan="2"|<span style="color:green">from</span> | |||
|1..1 | |||
|<span title="Tests a value, whether equal, greater than, less than etc.">[[#class_CompareClause|CompareClause]]</span> | |||
|The value comparison for lower end of the range | |||
|- | |||
|colspan="2"|<span style="color:green">to</span> | |||
|1..1 | |||
|<span title="Tests a value, whether equal, greater than, less than etc.">[[#class_CompareClause|CompareClause]]</span> | |||
|The value comparison of upper end of the range | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_FunctionShape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23FunctionShape/ <span style="color:navy"> '''FunctionShape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="2"|<span style="color:green">targetClass</span>span title | |||
| | |||
|Fixed :<span title="A function definition with optional parameters">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Function/ im:Function]</span> | |||
|null | |||
|- | |||
|colspan="2"|<span style="color:green">parameter</span> | |||
|0..* | |||
|<span title="">[[#class_Parameter|Parameter]]</span> | |||
|A list of parameters and data types used in this function | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="4"|<span id="class_Parameter">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Parameter/ <span style="color:navy"> '''Parameter'''</span>]</span> | |||
|colspan="4"| | |||
|null | |||
|- | |||
|colspan="2"|<span style="color:green">label</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The name of the parameter | |||
|- | |||
|rowspan="2"|or<br>1..1 | |||
|<span style="color:green">datatype</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The iri of The data type of the parameter when the data type is a literal | |||
|- | |||
| | |||
<span style="color:green">class</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The iri of the class of the parameter when the argument is an object | |||
|- | |||
|- | |||
|} | |||
== Data Model shapes == | |||
These shapes are the meta classes of the data modelling entities within the information model. | |||
{| class="wikitable" | |||
|+ | |||
!Shape | |||
!colspan="2"|Property | |||
!Card. | |||
!Value type | |||
!Comment | |||
|- | |||
|rowspan="2"|<span id="class_Data model shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23DataModelShape/ <span style="color:navy"> '''Data model shape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="2"|<span style="color:green">targetClass</span>span title | |||
| | |||
|Fixed :<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2Fns%2Fshacl%23 NodeShape/ sh: NodeShape]</span> | |||
|The shape of a SHACL node shape | |||
|- | |||
|colspan="2"|<span style="color:green">property</span> | |||
|0..* | |||
|<span title="The data model of a shacl node shape describing a property of a data model entity">[[#class_PropertyNodeShape|PropertyNodeShape]]</span> | |||
| | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="10"|<span id="class_PropertyNodeShape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23PropertyNodeShape/ <span style="color:navy"> '''PropertyNodeShape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="4"| | |||
|The data model of a shacl node shape describing a property of a data model entity | |||
|- | |||
|colspan="2"|<span style="color:green">path</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23Property/ rdf:Property]</span> | |||
|The iri of the property | |||
|- | |||
|colspan="2"|<span style="color:green">minCount</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|Minimum cardinality,if null assuming any number including zero | |||
|- | |||
|colspan="2"|<span style="color:green">maxCount</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|The maximum number allowed. If null then any number | |||
|- | |||
|rowspan="3"|or<br>1..1 | |||
|<span style="color:green">class</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The iri for the class range of the property. The range of this property is a subclass of this class | |||
|- | |||
| | |||
<span style="color:green">datatype</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The range of the property is a data type of this type | |||
|- | |||
| | |||
<span style="color:green">node</span> | |||
|1..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23Resource/ rdfs:Resource]</span> | |||
|The property points to a node shape | |||
|- | |||
|colspan="2"|<span style="color:green">comment</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Description of the property | |||
|- | |||
|colspan="2"|<span style="color:green">name</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The name of the property used for ease of recognition | |||
|- | |||
|colspan="2"|<span style="color:green">order</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|The property order for display | |||
|- | |||
|- | |||
|- | |||
|} | |||
== Concept shapes == | |||
These shapes are the meta classes of the terminology concepts used within the information model. | |||
{| class="wikitable" | |||
|+ | |||
!Shape | |||
!colspan="2"|Property | |||
!Card. | |||
!Value type | |||
!Comment | |||
|- | |||
|rowspan="12"|<span id="class_Concept shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23ConceptShape/ <span style="color:navy"> '''Concept shape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="2"|<span style="color:green">targetClass</span>span title | |||
| | |||
|Fixed :<span title="Top level information concept for all codeable concepts">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Concept/ im:Concept]</span> | |||
|data model for terminology concepts | |||
|- | |||
|colspan="2"|<span style="color:green">code</span> | |||
|1..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|The code for this concept, which may be a local code if local concept, or a core code such as a snomed identifier | |||
|- | |||
|colspan="2"|<span style="color:green">hasTermCode</span> | |||
|0..* | |||
|<span title="data model for a term code">[[#class_TermCodeShape|TermCodeShape]]</span> | |||
|Alternative terms or synonyms for this concept. A term may also have a description id. | |||
|- | |||
|colspan="2"|<span style="color:green">weighting</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|A number indicating a weighting for this concept which can be used in free text search | |||
|- | |||
|colspan="2"|<span style="color:green">definitionalStatus</span> | |||
|0..1 | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23VSET_Definitionalstatus/ im:VSET_Definitionalstatus]</span> | |||
|Indicates the authoring status of this concept, whether necessary only, or both necessary and sufficient. OWL would use Equivalent class axiom to indicate this. | |||
|- | |||
|colspan="2"|<span style="color:green">hasMap</span> | |||
|0..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|Any backward maps from core to legacy. This is limited to complex maps rather than simple matches and are 'backward' matches not suitable for automatic inclusion in subsumption queries | |||
|- | |||
|colspan="2"|<span style="color:green">usageTotal</span> | |||
|0..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|The approximate number of times this concept has been used in around 1 million primary care and acute care records | |||
|- | |||
|colspan="2"|<span style="color:green">im1Id</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|pointer the original identifer in IM1 | |||
|- | |||
|colspan="2"|<span style="color:green">matchedTo</span> | |||
|0..* | |||
|<span title="">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23VSET_Unspecified/ im:VSET_Unspecified]</span> | |||
|For a legacy concept, one or more concept this concept matches to. A query for the matched to concepts would entail this concept normally, but NOT the children of this concept | |||
|- | |||
|colspan="2"|<span style="color:green">sourceContext</span> | |||
|0..* | |||
|<span title="Data model for source context for a concept e.g. source system, field etc">[[#class_SourceContextShape|SourceContextShape]]</span> | |||
|The source context object for this concept indicating the system, table, field and organisation that published this legacy concept | |||
|- | |||
|colspan="2"|<span style="color:green">370124000</span> | |||
|0..* | |||
|<span title="Top level information concept for all codeable concepts">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Concept/ im:Concept]</span> | |||
|Indicates the concepts that this concept has been replaced by | |||
|- | |||
|colspan="2"|<span style="color:green">isChildOf</span> | |||
|0..* | |||
|<span title="Top level information concept for all codeable concepts">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Concept/ im:Concept]</span> | |||
|points to the parent legacy concept that this concept is in. Note that it may or may not be a true subtype. Reflects the original taxonomy | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="4"|<span id="class_Term code shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23TermCodeShape/ <span style="color:navy"> '''Term code shape'''</span>]</span> | |||
|colspan="4"| | |||
|data model for a term code | |||
|- | |||
|colspan="2"|<span style="color:green">label</span> | |||
|0..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">code</span> | |||
|0..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">status</span> | |||
|0..* | |||
|<span title="A status that is in active or active">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Status/ im:Status]</span> | |||
| | |||
|- | |||
|- | |||
|rowspan="10"|<span id="class_Source context shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23SourceContextShape/ <span style="color:navy"> '''Source context shape'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="4"| | |||
|Data model for source context for a concept e.g. source system, field etc | |||
|- | |||
|colspan="2"|<span style="color:green">sourceSystem</span> | |||
|1..* | |||
|<span title="A named computer system considered a type of device">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23ComputerSystem/ im:ComputerSystem]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourcePublisher</span> | |||
|1..* | |||
|<span title="A record of an organisation and its relationships. Named collections of people that have come together to achieve an objective">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Organisation/ im:Organisation]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceSchema</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceTable</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceField</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceRegex</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceHeading</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceText</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|colspan="2"|<span style="color:green">sourceValue</span> | |||
|1..* | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
| | |||
|- | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_Refined concept shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23RefinedConceptShape/ <span style="color:navy"> '''Refined concept shape'''</span>]<br> (subtype of [[#class_Concept shape|Concept shape]])</span> | |||
|colspan="4"| | |||
|A concept with role groups with roles | |||
|- | |||
|colspan="2"|<span style="color:green">roleGroup</span> | |||
|0..* | |||
|<span title="data model for a role group">[[#class_RoleGroupShape|RoleGroupShape]]</span> | |||
|Zero or many role groups, each group containing one or more roles. These represent constraints on the super types i.e. more specific. Generated by inference making sure to remove duplicate properties or super properties. | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="2"|<span id="class_Role group shape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23RoleGroupShape/ <span style="color:navy"> '''Role group shape'''</span>]</span> | |||
|colspan="4"| | |||
|data model for a role group | |||
|- | |||
|colspan="2"|<span style="color:green">Property</span> | |||
|0..* | |||
|<span title="Top level information concept for all codeable concepts">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Concept/ im:Concept]</span> | |||
| | |||
|- | |||
|- | |||
|<span id="class_im:ConceptPropertyShape">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23ConceptPropertyShape/ <span style="color:navy"> '''im:ConceptPropertyShape'''</span>]<br> (subtype of [[#class_Concept shape|Concept shape]])</span> | |||
|colspan="4"| | |||
|A concept that is a role in another concept and as a property may have domains and ranges | |||
|- | |||
| | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|} | |||
== Transactional shapes == | |||
These shapes form the meta classes for structures pass into APIs for query of, or filing into, the model or health records. | |||
{| class="wikitable" | |||
|+ | |||
!Shape | |||
!colspan="2"|Property | |||
!Card. | |||
!Value type | |||
!Comment | |||
|- | |||
|rowspan="3"|<span id="class_EntityFileTransaction">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23EntityFileTransaction/ <span style="color:navy"> '''EntityFileTransaction'''</span>]<br> (subtype of [[#class_Entity shape|Entity shape]])</span> | |||
|colspan="4"| | |||
|An entity with the additional CRUD indicators to enable deletes updates, adding quads etc | |||
|- | |||
|colspan="2"|<span style="color:green">crud</span> | |||
|1..1 | |||
|<span title="Operations that Update delete and and triples">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23CrudOperation/ im:CrudOperation]</span> | |||
|Indicates the nature of the CRUD transaction which must be one of im:DeleteAll, im:AddQuads (adds in additional triples), im:UpdateAll (replaces all the predicates for this entity in the graph with te ones submitted), im:UpdatePredicates ( replaces all the objects of these submitted predicates for this graph | |||
|- | |||
|colspan="2"|<span style="color:green">graph</span> | |||
|1..1 | |||
|<span title="Core graphs for core ontologies such as the health information model, Discovery and Snomed">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Graph/ im:Graph]</span> | |||
|The graph to which these triples apply. <br>This means you can add predicates to any entity without affecting the original authored entity, those predicates belonging only to this module or graph | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="4"|<span id="class_EntityDocument">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23EntityDocument/ <span style="color:navy"> '''EntityDocument'''</span>]</span> | |||
|colspan="4"| | |||
|A document containing any number of triples to file as a batch.<br>Note that if the document is sent as Json-LD with prefixed iris, a @context object will be required | |||
|- | |||
|colspan="2"|<span style="color:green">crud</span> | |||
|1..1 | |||
|<span title="Operations that Update delete and and triples">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23CrudOperation/ im:CrudOperation]</span> | |||
|Indicates the nature of the default CRUD transaction for entities in thisdocument. Thes can be overridden in each entity. Must be one of: im:DeleteAll, im:AddQuads (adds in additional triples), im:UpdateAll (replaces all the predicates for this entity in the graph with te ones submitted), im:UpdatePredicates ( replaces all the objects of these submitted predicates for this graph | |||
|- | |||
|colspan="2"|<span style="color:green">graph</span> | |||
|1..1 | |||
|<span title="Core graphs for core ontologies such as the health information model, Discovery and Snomed">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Graph/ im:Graph]</span> | |||
|The graph to which these entities apply by default. <br>This may be overridden by the entities<br>This means you can add predicates to any entity without affecting the original authored entity, those predicates belonging only to this module or graph | |||
|- | |||
|colspan="2"|<span style="color:green">entities</span> | |||
|1..* | |||
|<span title="The super class and data model for all named resources in the model i.e. the data model of the entities that are labelled with iri label and status">[[#class_EntityShape|EntityShape]]</span> | |||
|Set of entities to file. If the entities do not have crud or graphs oftheir own then the default from the document are used | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="7"|<span id="class_Query Request">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23QueryRequest/ <span style="color:navy"> '''Query Request'''</span>]</span> | |||
|colspan="4"| | |||
|A request for data sent as a body (json in local name format) to the /queryIM API.<br>Contains either a query or query iri with run time variable values for use in the query | |||
|- | |||
|colspan="2"|<span style="color:green">page</span> | |||
|0..1 | |||
|<span title="Information about paging if the client wishes to page results, including page number and page size">[[#class_PageInformation|PageInformation]]</span> | |||
|optional page number and size if the client is looking for paged results | |||
|- | |||
|colspan="2"|<span style="color:green">textSearch</span> | |||
|0..1 | |||
|<span title="any valid json value characters with json escapes">[https://www.w3.org/TR/xmlschema-2/#string xsd:string]</span> | |||
|If a free text search is part of the query | |||
|- | |||
|colspan="2"|<span style="color:green">argument</span> | |||
|0..* | |||
|<span title="A named parameter and a value for passing into a function">[[#class_Argument|Argument]]</span> | |||
|arguments to pass in to the query as parameters. Parameter name and value pairs. Values ,may be strings, numbers or IRIs | |||
|- | |||
|rowspan="2"|or<br>1..1 | |||
|<span style="color:green">query</span> | |||
|1..1 | |||
|<span title="A Query definition holding the logical definition of a query in a standard language">[[#class_QueryDefinition|QueryDefinition]]</span> | |||
|The query definition for an inline dynamic query. If the query is already defined, use the queryIri. Arguments may be used in eoither approach | |||
|- | |||
| | |||
<span style="color:green">queryIri</span> | |||
|1..1 | |||
|<span title="The query definition for a stored query">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23Query/ im:Query]</span> | |||
|The IRI of a predefined query in the information model. i.e. request the system to run query X | |||
|- | |||
|colspan="2"|<span style="color:green">referenceDate</span> | |||
|0..1 | |||
|<span title="im date time format">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23DateTime/ im:DateTime]</span> | |||
|reference date for date ranges that use reference date. Note that it could be passed in as an argeument | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|- | |||
|rowspan="3"|<span id="class_PageInformation">[https://im.endeavourhealth.net/viewer/#/concept/http%3A%2F%2Fendhealth.info%2Fim%23PageInformation/ <span style="color:navy"> '''PageInformation'''</span>]</span> | |||
|colspan="4"| | |||
|Information about paging if the client wishes to page results, including page number and page size | |||
|- | |||
|colspan="2"|<span style="color:green">pageNumber</span> | |||
|1..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|Page number (starting at 1) | |||
|- | |||
|colspan="2"|<span style="color:green">pageSize</span> | |||
|1..1 | |||
|<span title="whole number">[https://www.w3.org/TR/xmlschema-2/#integer xsd:integer]</span> | |||
|number of entries per page | |||
|- | |||
|- | |||
|} |
Revision as of 08:54, 28 August 2022
General approach
The information model language uses RDF triples as its basic grammar i.e. subject, predicate, and object with graph making up quadruples of an RDF data set.
The preferred exchange format is JSON-LD which is json with the @context to handle iri prefixes and @id for indicating RDF IRIs.
The grammar is based on the main stream language RDFS including a profile of SHACL for shape building and ECL in RDF form for Expression constraints.
The information manager supports OWL EL inputs which are out through a reasoner to generate inferred RDFS and removing the OWL. In other words the information model run time is a fully inferred ontology.
The IM also includes a query language DSL for the purposes of logical query definition, which is mapped by the IM to the relevant SPARQL, SQL or OpenSearch syntax for running on live data. The purpose and rationale for the DSL is more full described in the information model query
article and is able to represent all main stream health care queries that generate data sets, but stops short of the data manipulation used by Tableau, Power BI etc.
The use of JSON-LD can be somewhat tedious (as RDF predicates cannot directly map to standard programming language class properties) , so the use of 'local names' for business related APIs (e.g. query) is supported. In tis case the JSON field names can use the local names without the full IRI, as long as the JSON complies with the language grammar described here.
Consequently, in order to make the documentation clearer, local names are used in this documentation also with links to the IM viewer or W3C equivalent.
This documentation is auto generated from the information model folders and shapes themselves, and thus the shapes can also be viewed more fully in the Information Model Directory viewing application
Types and shapes
Types (as represented as the value of the rdf: type predicate, are used to indicate the structure of a data class or language grammar (as long as the language conforms to a JSON or triple structure)..
A special type of 'Shape' (as represented as an entity with rdf:type -> shacl:NodeShape) define the properties of a type. Thus a shape is targeted at a type or class.
Shapes are also classes (i.e. also are rdf:type -> rdf:Class), so that any shape that is a subclass of another shape inherits its properties unless overridden by sub properties, or subclass values of the parent properties.
Shapes are in effect Closed world interpretation of classes.
This documentation is therefore a documentation of shapes.
Basic shapes
These shapes are the meta classes of the named entities within the information model.
Shape | Property | Card. | Value type | Comment | |
---|---|---|---|---|---|
IrirRef | A resource with an iri and name | ||||
label | 1..1 | xsd:string | The name of the entity | ||
Entity shape (subtype of IrirRef) |
targetClassspan title | Fixed :im:Entity | The super class and data model for all named resources in the model i.e. the data model of the entities that are labelled with iri label and status | ||
comment | 0..1 | xsd:string | The description of the entity | ||
type | 1..1 | rdfs:Resource | The base type of the entity i.e. one of the high level entity types | ||
status | 1..1 | im:Status | The status of the entity being active, inactive, draft or unassigned | ||
scheme | 1..1 | im:Graph | The code scheme or graph which the entity belongs to | ||
subClassOf | 0..* | im:EntityShape | An entity that this entity inherits from, both semantically and structurally | ||
IriAlias (subtype of IrirRef) |
An IRI with a name and an alias (for use as variables for reference | ||||
alias | 0..1 | xsd:string | The column name in a select clause for this property, or a variable used to reference the result set of the values matched |
Query language shapes
These shapes form the query language DSL for retrieving data from the IM or health records.
Shape | Property | Card. | Value type | Comment | |
---|---|---|---|---|---|
QueryShape (subtype of Entity shape) |
targetClassspan title | Fixed :im:Query | A query that is stored as an entity in a query library | ||
query | 0..1 | QueryDefinition | The query definition itself | ||
Query definition (subtype of ClauseHeading) |
A Query definition holding the logical definition of a query in a standard language | ||||
resultFormat | 0..1 | xsd:string | Whether the result set is required flat select style json or a nested graphql json object style 'RELATIONAL' or 'OBJECT. Default is OBJECT | ||
usePrefixes | 0..1 | xsd:boolean | true if you want the results to use IRI prefixes | ||
activeOnly | 0..1 | xsd:boolean | Whether only active entities are included in the match clauses or select clauses | ||
or 1..1 |
select | 1..1 | SelectClause | Select query clause logically similar to SQL/SPARQL select but with GraphQL nesting ability | |
ask |
0..1 | MatchClause | If the query is a boolean true or false use match clauses as an ask | ||
mainEntity | 0..1 | sh:NodeShape | The main entity to which all matches must be related e.g. Patient or organisation. i.e. the IRI of a data model entity (SHACL shape) | ||
ClauseHeading (subtype of Entity shape) |
General headings such as name description and alias | ||||
alias | 1..1 | xsd:string | An alias or reference term that can be used throughout a query as shorthand for the result set | ||
SelectClause (subtype of ClauseHeading) |
Defines the objects and properties to retrieve from a graph, subject to a mach clause. Supports graphql type nesting and subselsects for column groups | ||||
count | 0..1 | xsd:boolean | If the query result is simply a sum of the main entities found. equivalent to COUNT(id) | ||
or 0..1 |
property | 1..* | PropertySelectClause | Information about a property or field to includein the results. Property select supports nesting with selects for the objects that may be values of the property | |
pathToTarget |
1..1 | PathTargetClause | Special function for path query. Information about the target entity when the query is looking to return paths between a source and a target. Both are likely to be passed in as parameters | ||
match | 0..* | MatchClause | The match pattern to which the select clause must comply. Equivalent to a where/filter in SPARQL and JOIN/WHERE in SQL | ||
distinct | 0..1 | xsd:boolean | Whether the entity objects returned should be distinct | ||
or 0..1 |
entityType | 1..1 | ConceptReference | The entity type for instances this select clause operates on. Options include including subtypes. | |
entityId |
1..1 | ConceptReference | An instance of an enttu for which this select clause operates. As in entity type, optionally to include subtypes, where the entity id is a concept | ||
entityIn |
1..1 | rdfs:Resource | The consept set, value set, or query result set that forms the base population of instances on which the select clause operates. e.g. a parent cohort. | ||
groupBy | 0..* | PropertySelectClause | If the results need to be grouped, the grouping properties. | ||
orderLimit | 0..* | OrderLimitClause | Ordering of instances via a property value and limiting th enumber returned. | ||
subselect | 0..* | SelectClause | For a query with column groups such as a list report, the select query for each group | ||
MatchClause (subtype of ClauseHeading) |
A clause containing criteria which the objects must conform to. Equivalent to a from/join where clause in SQL and where/filter in sparql. Supports graph traversal filtering and inference for subsumption query | ||||
pathTo | 0..1 | rdfs:Resource | A convenient way of traversing properties and objects to get to the match object, avoiding excessive nesting. The properties are listed and thus traversed in strict order | ||
or 0..1 |
or | 2..* | MatchClause | Boolean operator OR on subclauses | |
and |
2..* | MatchClause | Boolean operator AND on subclauses | ||
or 0..1 |
entityType | 1..1 | ConceptReference | The entity type that matched instances must be (including subtypes). Options include including subtypes. | |
entityId |
1..1 | ConceptReference | An instance of an entitu for which this match clause operates on. As in entity type, optionally to include subtypes, where the entity id is a concept | ||
or 0..1 |
entityInSet | 1..1 | rdfs:Resource | The concept set, value set, or query result set that the instances must be in to match. on which the select clause operates. e.g. a parent cohort. | |
entityNotInSet |
1..1 | rdfs:Resource | The concept set, value set, or query result set that the instances must NOT be in to match. on which the select clause operates. e.g. a parent cohort. | ||
graph | 0..1 | im:Graph | The iri of a graph if the query is limied to a particular data set | ||
property | 0..* | PropertyValueClause | Properties and their values required to match (or not match), including any nesting of objects (joins). The default assumption is the AND operator on the properties. Use orProperty for or operator | ||
orProperty | 2..* | PropertyValueClause | Properties and their values one of which is required to match (or not match), including any nesting of objects (joins). | ||
notExist | 0..1 | xsd:boolean | Negation indicator for this entire clause. i.e. for the instance to be included it must NOT match. | ||
orderLimit | 0..1 | OrderLimitClause | Ability to order and limit the match before the select or matchstatement operates. Crucially, this is processed before the application of a test or check, enabling things like latest or earliest, max or min | ||
testProperty | 0..* | PropertyValueClause | Further test applied to the result of an ordered limited match. The rest of the match clause then becomes a sub select query on which these tests operate. Implicit operator is AND | ||
displayText | 0..1 | xsd:string | Optional text for display in query viewer if dfferent from the match clause name | ||
PropertySelectClause (subtype of ConceptReference) |
null | ||||
or 0..1 |
sum | 0..1 | xsd:boolean | Whether the result is a summation of this property's values | |
average |
0..1 | xsd:boolean | Whether the result is an average of this property's values | ||
max |
0..1 | xsd:boolean | Whether the result is the maximum of this property's values | ||
select | 0..1 | SelectClause | Nested select clause for graphql style results format | ||
inverseOf | 0..1 | xsd:boolean | Indicates if true that the selected property is an inverse relationship with the target object | ||
function | 0..1 | im:Function | The iri of a function indicating that the result is the result of a function operating on the property values, and any arguments passed in | ||
argument | 0..* | Argument | Arguments to pass into the function | ||
PathTargetClause (subtype of IrirRef) |
Information about the target of a path query, including the IRI of the target and the number of hops processed. | ||||
depth | 0..1 | xsd:integer | How many hops to be taken in the graph between source and target | ||
ConceptReference (subtype of IriAlias) |
null | ||||
includeSubtypes | 0..1 | xsd:boolean | Whether to include the subtypes of the entites selected or matched | ||
includeSupertypes | 0..1 | xsd:boolean | Whether to include the supertypes of the entity in a match clause. Used for ascending the hierarch to look for properties inherited | ||
excludeSelf | 0..1 | xsd:boolean | Whether to exclude this entity when either include supbtypes or include suprtypes is set. Rarely used but sometimes found in ECL definitions | ||
OrderLimitClause | Orders the value of the property (property as represented by the iri and alias) | ||||
orderBy | 1..1 | IriAlias | The property or property variable to order the results by | ||
direction | 1..1 | xsd:string | ASCENDING or DESCENDING to indicate the order direction | ||
limit | 0..1 | xsd:integer | The count of instances to return after ordering | ||
PropertyValueClause (subtype of ConceptReference) |
A property (as a concept reference) and value filter supporting ranges sets and functions, As a result of the concept references, supports sub properties as well as inferred values | ||||
pathTo | 0..1 | rdfs:Resource | A convenient way of traversing properties and objects to get to a property, avoiding excessive nesting. The properties are listed and thus traversed in strict order | ||
inverseOf | 0..1 | xsd:boolean | Tests the property as an inverse property (inbound relationship) | ||
notExist | 0..1 | xsd:boolean | The property match must not exist. This is negatation at a more granular level than the match clause. For example to test for a null field or absent property | ||
optional | 0..1 | xsd:boolean | Optional match for this property, used to enable IF a present then A must have X,Y. N.B for SPARQL experts the OPTIONAL is generally generated automatically from SELECT, so optional need only be set when a test is to be applied to a linked object | ||
function | 1..1 | FunctionClause | A function that operates on the property value (and other parameters) prior to a compare or range or inclusion test. For example a time difference function operating on the date and a reference date. Note that properties that ARE functions do not need functions included for example age. For these simply supply the arguments. | ||
argument | 0..1 | Argument | Arguments to pass into a function when the property is a function property. Note that if the test is a function then the argument list would be in the function clause | ||
or 0..1 |
value | 1..1 | CompareClause | If testing a property value as equal greater than ete. use compare | |
inSet |
1..* | ConceptReference | The value of the property must be in the concept set IRI. For teesting simple lists or single concepts use isConcept | ||
notInSet |
1..* | ConceptReference | The value of the property must NOT be in the concept set IRI. Note that this is not negation of the entire match, only the negation of this entry instance when tested. Equivalent to SPARQL filter not in. For testing simple lists of concepts use isNotConcept | ||
isConcept |
1..* | ConceptReference | The value of the property be this concept (and otionally its sub types). Used for inline sets or single concepts | ||
isNotConcept |
1..* | ConceptReference | The value of the property must NOT be this concept (and otionally its sub types). Used for inline sets or single concepts. Note that this is not negation of the entire match, only the negation of this entry instance when tested. Equivalent to SPARQL filter not in. | ||
inRange |
1..1 | RangeClause | Test foe a value being between two absolute or relative values | ||
valueMatch |
1..1 | MatchClause | The match clause operating on the property value object. Equivalent to a join in SQL or '.' in sparql | ||
displayText | 0..1 | xsd:string | Optional text for display in query viewer if dfferent from the match clause name | ||
Argument | A named parameter and a value for passing into a function | ||||
parameter | 1..1 | xsd:string | Parameter name for a function or the parameter name for an argument | ||
or 1..1 |
valueData | 1..1 | xsd:string | Vaue that is a literal such as a string or number | |
valueVariable |
1..1 | xsd:string | argumenT value which is a variable name to be resolved at run time | ||
valueSelect |
1..1 | SelectClause | Argument value that is the result of a select query | ||
valueIri |
1..1 | im:IriRef | Argument value that is an iri | ||
FunctionClause (subtype of IrirRef) |
A function used in a query consisting of the function iri and one or more arguments to pass in at run time | ||||
argument | 0..* | Argument | Arguments to pass into the function. They should match the parameter definitions of the function | ||
CompareClause | Tests a value, whether equal, greater than, less than etc. | ||||
comparison | 1..1 | xsd:string | Comparison operators : EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, NOT_EQUAL | ||
or 1..1 |
valueData | 1..1 | xsd:string | The value to compare against. This is a string which will be cast to a number or date, depending on the data type of the property value | |
valueVariable |
1..1 | xsd:string | The variable (alias) to compare against. The variable may be an argument to the query (e.g. $reference date or an alias in this query or another query. Use the $ prefix to make it clear | ||
valueSelect |
1..1 | SelectClause | The result to compare the property value against is derived from a select sub query | ||
RangeClause | A range for use in property value testing | ||||
from | 1..1 | CompareClause | The value comparison for lower end of the range | ||
to | 1..1 | CompareClause | The value comparison of upper end of the range | ||
FunctionShape (subtype of Entity shape) |
targetClassspan title | Fixed :im:Function | null | ||
parameter | 0..* | Parameter | A list of parameters and data types used in this function | ||
Parameter | null | ||||
label | 1..1 | xsd:string | The name of the parameter | ||
or 1..1 |
datatype | 1..1 | rdfs:Resource | The iri of The data type of the parameter when the data type is a literal | |
class |
1..1 | rdfs:Resource | The iri of the class of the parameter when the argument is an object |
Data Model shapes
These shapes are the meta classes of the data modelling entities within the information model.
Shape | Property | Card. | Value type | Comment | |
---|---|---|---|---|---|
Data model shape (subtype of Entity shape) |
targetClassspan title | Fixed :NodeShape/ sh: NodeShape | The shape of a SHACL node shape | ||
property | 0..* | PropertyNodeShape | |||
PropertyNodeShape (subtype of Entity shape) |
The data model of a shacl node shape describing a property of a data model entity | ||||
path | 1..1 | rdf:Property | The iri of the property | ||
minCount | 0..1 | xsd:integer | Minimum cardinality,if null assuming any number including zero | ||
maxCount | 0..1 | xsd:integer | The maximum number allowed. If null then any number | ||
or 1..1 |
class | 1..1 | rdfs:Resource | The iri for the class range of the property. The range of this property is a subclass of this class | |
datatype |
1..1 | rdfs:Resource | The range of the property is a data type of this type | ||
node |
1..1 | rdfs:Resource | The property points to a node shape | ||
comment | 0..1 | xsd:string | Description of the property | ||
name | 0..1 | xsd:string | The name of the property used for ease of recognition | ||
order | 0..1 | xsd:integer | The property order for display |
Concept shapes
These shapes are the meta classes of the terminology concepts used within the information model.
Shape | Property | Card. | Value type | Comment | |
---|---|---|---|---|---|
Concept shape (subtype of Entity shape) |
targetClassspan title | Fixed :im:Concept | data model for terminology concepts | ||
code | 1..1 | xsd:string | The code for this concept, which may be a local code if local concept, or a core code such as a snomed identifier | ||
hasTermCode | 0..* | TermCodeShape | Alternative terms or synonyms for this concept. A term may also have a description id. | ||
weighting | 0..1 | xsd:integer | A number indicating a weighting for this concept which can be used in free text search | ||
definitionalStatus | 0..1 | im:VSET_Definitionalstatus | Indicates the authoring status of this concept, whether necessary only, or both necessary and sufficient. OWL would use Equivalent class axiom to indicate this. | ||
hasMap | 0..* | xsd:string | Any backward maps from core to legacy. This is limited to complex maps rather than simple matches and are 'backward' matches not suitable for automatic inclusion in subsumption queries | ||
usageTotal | 0..1 | xsd:integer | The approximate number of times this concept has been used in around 1 million primary care and acute care records | ||
im1Id | 0..1 | xsd:string | pointer the original identifer in IM1 | ||
matchedTo | 0..* | im:VSET_Unspecified | For a legacy concept, one or more concept this concept matches to. A query for the matched to concepts would entail this concept normally, but NOT the children of this concept | ||
sourceContext | 0..* | SourceContextShape | The source context object for this concept indicating the system, table, field and organisation that published this legacy concept | ||
370124000 | 0..* | im:Concept | Indicates the concepts that this concept has been replaced by | ||
isChildOf | 0..* | im:Concept | points to the parent legacy concept that this concept is in. Note that it may or may not be a true subtype. Reflects the original taxonomy | ||
Term code shape | data model for a term code | ||||
label | 0..* | xsd:string | |||
code | 0..* | xsd:string | |||
status | 0..* | im:Status | |||
Source context shape (subtype of Entity shape) |
Data model for source context for a concept e.g. source system, field etc | ||||
sourceSystem | 1..* | im:ComputerSystem | |||
sourcePublisher | 1..* | im:Organisation | |||
sourceSchema | 1..* | xsd:string | |||
sourceTable | 1..* | xsd:string | |||
sourceField | 1..* | xsd:string | |||
sourceRegex | 1..* | xsd:string | |||
sourceHeading | 1..* | xsd:string | |||
sourceText | 1..* | xsd:string | |||
sourceValue | 1..* | xsd:string | |||
Refined concept shape (subtype of Concept shape) |
A concept with role groups with roles | ||||
roleGroup | 0..* | RoleGroupShape | Zero or many role groups, each group containing one or more roles. These represent constraints on the super types i.e. more specific. Generated by inference making sure to remove duplicate properties or super properties. | ||
Role group shape | data model for a role group | ||||
Property | 0..* | im:Concept | |||
im:ConceptPropertyShape (subtype of Concept shape) |
A concept that is a role in another concept and as a property may have domains and ranges | ||||
Transactional shapes
These shapes form the meta classes for structures pass into APIs for query of, or filing into, the model or health records.
Shape | Property | Card. | Value type | Comment | |
---|---|---|---|---|---|
EntityFileTransaction (subtype of Entity shape) |
An entity with the additional CRUD indicators to enable deletes updates, adding quads etc | ||||
crud | 1..1 | im:CrudOperation | Indicates the nature of the CRUD transaction which must be one of im:DeleteAll, im:AddQuads (adds in additional triples), im:UpdateAll (replaces all the predicates for this entity in the graph with te ones submitted), im:UpdatePredicates ( replaces all the objects of these submitted predicates for this graph | ||
graph | 1..1 | im:Graph | The graph to which these triples apply. This means you can add predicates to any entity without affecting the original authored entity, those predicates belonging only to this module or graph | ||
EntityDocument | A document containing any number of triples to file as a batch. Note that if the document is sent as Json-LD with prefixed iris, a @context object will be required | ||||
crud | 1..1 | im:CrudOperation | Indicates the nature of the default CRUD transaction for entities in thisdocument. Thes can be overridden in each entity. Must be one of: im:DeleteAll, im:AddQuads (adds in additional triples), im:UpdateAll (replaces all the predicates for this entity in the graph with te ones submitted), im:UpdatePredicates ( replaces all the objects of these submitted predicates for this graph | ||
graph | 1..1 | im:Graph | The graph to which these entities apply by default. This may be overridden by the entities This means you can add predicates to any entity without affecting the original authored entity, those predicates belonging only to this module or graph | ||
entities | 1..* | EntityShape | Set of entities to file. If the entities do not have crud or graphs oftheir own then the default from the document are used | ||
Query Request | A request for data sent as a body (json in local name format) to the /queryIM API. Contains either a query or query iri with run time variable values for use in the query | ||||
page | 0..1 | PageInformation | optional page number and size if the client is looking for paged results | ||
textSearch | 0..1 | xsd:string | If a free text search is part of the query | ||
argument | 0..* | Argument | arguments to pass in to the query as parameters. Parameter name and value pairs. Values ,may be strings, numbers or IRIs | ||
or 1..1 |
query | 1..1 | QueryDefinition | The query definition for an inline dynamic query. If the query is already defined, use the queryIri. Arguments may be used in eoither approach | |
queryIri |
1..1 | im:Query | The IRI of a predefined query in the information model. i.e. request the system to run query X | ||
referenceDate | 0..1 | im:DateTime | reference date for date ranges that use reference date. Note that it could be passed in as an argeument | ||
PageInformation | Information about paging if the client wishes to page results, including page number and page size | ||||
pageNumber | 1..1 | xsd:integer | Page number (starting at 1) | ||
pageSize | 1..1 | xsd:integer | number of entries per page |