FHIR RDF Sample side by side comparisons

Similar documents
Terminology binding in FHIR-RDF

Comparison of Semantic Web serialization syntaxes

Tony Mallia Edmond Scientific

Short notes about OWL 1

Semantic Web Technologies: Web Ontology Language

Semantic Technologies

Ontological Modeling: Part 15

KDI OWL. Fausto Giunchiglia and Mattia Fumagallli. University of Trento

FOUNDATIONS OF SEMANTIC WEB TECHNOLOGIES

Web Ontology Language: OWL

Knowledge Representation RDF Turtle Namespace

Web Ontology Language: OWL

OWL 2 Web Ontology Language:Mapping to RDF Graphs W3C Working Draft 02 December 2008

Chapter 2 AN INTRODUCTION TO THE OWL WEB ONTOLOGY LANGUAGE 1. INTRODUCTION. Jeff Heflin Lehigh University

Table of Contents. iii

DEVELOPING AN OWL ONTOLOGY FOR E- TOURISM

Reasoning with the Web Ontology Language (OWL)

Appendix B: The LCA ontology (lca.owl)

Ontological Modeling: Part 7

Blending FHIR RDF and OWL

The ISO D approach

The Semantic Web RDF, RDF Schema, and OWL (Part 2)

Why Ontologies? RRDIU - Semantic Web 2

An Alternative CIM Modeling Approach using JSON-LD

Web Ontology Language: OWL

Ontological Modeling: Part 14

Web Ontology Language: OWL by Grigoris Antoniou Frank van Harmelen

Chapter 4 Web Ontology Language: OWL

LINKING BACKGROUND INFORMATION

Semantic Web in Depth: Web Ontology Language (OWL) Dr Nicholas Gibbins 32/3019

An RDF-based Distributed Expert System

Exercise 3.1 (Win-Move Game: Draw Nodes) Consider again the Win-Move-Game. There, WinNodes and LoseNodes have been axiomatized.

Lecture 8 OWL: Web Ontology Language

Knowledge management. OWL Web Ontology Language

Main topics: Presenter: Introduction to OWL Protégé, an ontology editor OWL 2 Semantic reasoner Summary TDT OWL

Ontological Modeling: Part 11

OWL DL / Full Compatability

Knowledge management. OWL Web Ontology Language

JOURNAL OF OBJECT TECHNOLOGY

TMCL and OWL. Lars Marius Garshol. Bouvet, Oslo, Norway

OWL Web Ontology Language

Lecture 3: Ontologies

LINKED ENERGY DATA, ENABLING MONITORING AND DECISION SUPPORT FOR IMPROVED ENERGY MANAGEMENT

OWL and tractability. Based on slides from Ian Horrocks and Franz Baader. Combining the strengths of UMIST and The Victoria University of Manchester

Reasoning with Rules SWRL as Example. Jan Pettersen Nytun, UIA

2 nd International Semantic Web Conference (ISWC2003)

Intelligent Agents. Pınar Yolum Utrecht University. Spring 2018 Pınar Yolum

An Introduction to the Semantic Web. Jeff Heflin Lehigh University

OWL 2 Web Ontology Language Primer

Interoperability of XML Schema Applications with OWL Domain Knowledge and Semantic Web Tools

Guidance on the use of CodeableConcept

ISO CTS2 and Value Set Binding. Harold Solbrig Mayo Clinic

OWL 2 Web Ontology Language Primer W3C Recommendation 27 October 2009

Semantic Web KM: A Knowledge Machine for Semantic Webs

Semantic Web Services and OOP toward Unified Services

Semantic Web In Depth: Resource Description Framework. Dr Nicholas Gibbins 32/4037

OWL 2 Update. Christine Golbreich

INF3580/4580 Semantic Technologies Spring 2017

CC LA WEB DE DATOS PRIMAVERA Lecture 4: Web Ontology Language (I) Aidan Hogan

The P2 Registry

INF3580 Semantic Technologies Spring 2012

Modeling LMF compliant lexica in OWL-DL

Semantic Web Technologies Web Ontology Language (OWL) Part II. Heiko Paulheim

OWL Full and UML 2.0 Compared

Deep integration of Python with Semantic Web technologies

OWL-based reasoning with retractable inference

Extracting Ontologies from Standards: Experiences and Issues

The OWL API: An Introduction

Goals. Introduction to Ontologybased. Service Semantics. Functional Semantics. Need more than XML Schema. Non-functional Semantics

Building Blocks of Linked Data

Genea: Schema-Aware Mapping of Ontologies into Relational Databases

RDF /RDF-S Providing Framework Support to OWL Ontologies

Knowledge Representation. Apache Jena Part II. Jan Pettersen Nytun, UiA

Chapter 4 OWL. Outline. A Brief History of OWL: SHOE. The OWL Family Tree

Semantic Web. Ontology and OWL. Morteza Amini. Sharif University of Technology Fall 95-96

SADI Semantic Web Services

XML and Semantic Web Technologies. III. Semantic Web / 2. Web Ontology Language (OWL)

Making BioPAX SPARQL

Publishing OWL ontologies with Presto

OWL Tutorial. LD4P RareMat / ARTFrame Meeting Columbia University January 11-12, 2018

Open Geospatial Consortium Inc.

Ontological Modeling: Part 2

Linked data schemata: fixing unsound foundations

OWLET: An Object-Oriented Environment for OWL Ontology Management

Semantic Technologies and CDISC Standards. Frederik Malfait, Information Architect, IMOS Consulting Scott Bahlavooni, Independent

Knowledge Representation VII - IKT507. SPARQL stands for SPARQL Protocol And RDF Query Language

Introduction to OWL. Marco Ronchetti Università di Trento Italy

Today: RDF syntax. + conjunctive queries for OWL. KR4SW Winter 2010 Pascal Hitzler 3

OWL & SPARQL - 웹정보시스템

Abstract. The report is written in english. Keywords: Linked Data, Clinical Data, Semantic Web, AstraZeneca, RDF, OWL, SPARQL, Jena

Linked data schemata: fixing unsound foundations

Knowledge Representation for the Semantic Web Lecture 4: Description Logics III

A Frame-based Resource Description Framework Expert System

Chapter 3 Research Method

Stream Reasoning For Linked Data

08 OWL SEMANTIC WEB ONTOLOGY WEB LANGUAGE IMRAN IHSAN ASSISTANT PROFESSOR, AIR UNIVERSITY, ISLAMABAD

Chapter 4 OWL. Outline. The OWL Family Tree. A Brief History of OWL: SHOE

OWL DL: Trees or Triples?

Ontological Modeling: Part 13

12th ICCRTS. On the Automated Generation of an OWL Ontology based on the Joint C3 Information Exchange Data Model (JC3IEDM)

Transcription:

1 2 FHIR RDF Sample side by side comparisons V10 Tony Mallia 12/1/15 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Contents 1 Datatypes (section 1.18.0.1...3 1.1 Id...3 1.2 Decimal...3 1.3 FHIR CodeableConcept and Coding Structure Definition...4 2 Coding Binding to external terminology (section 1.17.3.3.5...8 2.1 FHIR XML...8 2.2 RDF Instance Example...8 2.3 FHIR Allergy Intolerance OWL Schema...9 3 Definitions of Code System, Concept and ValueSet... 10 3.1 Code System... 10 3.2 Bridging Ontology... 10 3.3 Concept... 11 3.4 ValueSet... 11 3.5 Examples... 13 4 FHIR internal System and Coding bindings (OWL Schema... 18 5 System and codings external RDF representation... 19 6 Valueset Definition... 20 6.2 Named codings... 20 7 ValueSet schema in the metamodel... 21 8 Resource References... 22 8.1 Githib example... 22 8.2 Subgroup example... 22 9 Bundle... 24 10 URI Naming... 24 10.1 Githib example... 24 10.2 Subgroup example... 24 11 Ordering... 25 11.1 Githib example... 25 11.2 RDF individual ordering example... 25 11.3 RDF Object Property Ordering example... 25 12 Profiles... 27 Legend Most of the RDF is generated by verbatim logic (e.g. An unidentified element becomes an anonymous individual - blank node. Where RDF is generated by special transformation it is marked in red

40 Where RDF is inferred by a reasoner it is marked in green. 41

42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 1 Datatypes (section 1.18.0.1 Difference in the treatment of datatypes code, string and uri as classes with primitive values as rdf:datatypes. Datatypes are transformed into OWL Classes where the value is expressed as a an OWL DataProperty with restrictions (facets etc. 1.1 Id 1.1.1 Id instance 1.1.2 Id schema fhir:id rdf:type owl:class ; rdfs:subclassof fhir:element, owl:onproperty fhir:value ; owl:allvaluesfrom [ rdf:type rdfs:datatype ; owl:ondatatype xsd:string ; owl:withrestrictions ( [ xsd:pattern "[A-Za-z0-9\\-\\.{1,64}", owl:onproperty fhir:value ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange xsd:string ; rdfs:comment "A whole number in the range 0 to 2^64-1, optionally represented in hex, a uuid, an oid or any other combination of lower-case letters a-z, numerals, - and., with a length limit of 36 characters". 1.2 Decimal Decimal has an additional DataProperty fhir:fractionadigits which allows the explicit declaration of scale. 1.2.1 Decimal OWL instance [ a fhir:decimal ; fhir:value 123.4 ; fhir:fractionaldigits 3 1.2.2 Decimal OWL Schema fhir:decimal rdf:type owl:class ; rdfs:subclassof fhir:element, owl:onproperty fhir:fractiondigits ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange xsd:nonnegativeinteger, owl:onproperty fhir:fractiondigits ; owl:allvaluesfrom xsd:nonnegativeinteger, owl:onproperty fhir:value ; owl:allvaluesfrom xsd:decimal, owl:onproperty fhir:value ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange xsd:decimal ; rdfs:comment "A rational number with implicit precision".

92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 1.3 FHIR CodeableConcept and Coding Structure Definition 1.3.1 FHIR XML <code> <coding> <system value="http://example.org/local"/> <code value="admin"/> <display value="admin"/> </coding> </code> CodeableConcept Structural Definition <[name xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <coding><!-- 0..* Coding Code defined by a terminology system --></coding> <text value="[string"/><!-- 0..1 Plain text representation of the concept --> </[name> Coding Structural Definition <[name xmlns="http://hl7.org/fhir"> <!-- from Element: extension --> <system value="[uri"/><!-- 0..1 Identity of the terminology system --> <version value="[string"/><!-- 0..1 Version of the system - if relevant --> <code value="[code"/><!-- 0..1 Symbol in syntax defined by the system --> <display value="[string"/><!-- 0..1 Representation defined by the system --> <primary value="[boolean"/><!-- 0..1 If this code was chosen directly by the user --> </[name> 1.3.2 RDF Data for Coding Instance The RDF variant for fhir:code, fhir:coding and fhir:codeableconcept are not straight translations of the FHIR representation. 3 new additional classes are introduced codebase, CodingBase and ConceptBase. xxx.code [ a fhir:codeableconcept ; ConceptBase.coding [ rdf:type fhir:codingbase ; fhir:codingbase.system [ a fhir:uri; fhir:value http://example.org/local ; fhir:codingbase.code [ a fhir:codebase ; fhir:value "admin" ; fhir:codingbase.display [ a fhir:string; fhir:value "Admin" ; ; ; The fhir:codeableconcept type assertion (as a marker allows round trip back to the original XML type. The same approach will be taken for fhir:coding and fhir:code. This approach will be implemented by creating ConceptBase, CodingBase and codebase individuals as blank nodes.

133 134 1.3.3 FHIR OWL Schema ConceptBase has subclasses fhir:codeableconcept, fhir:coding and fhir:code. 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 [ rdf:type owl:alldisjointclasses ; owl:members ( fhir:codingbase fhir:conceptbase fhir:codebase. ################################################################# # Classes ################################################################# ### http://hl7.org/fhir/conceptbase fhir:conceptbase rdf:type owl:class ; rdfs:subclassof fhir:datatype, owl:onproperty fhir:conceptbase.coding ; owl:allvaluesfrom fhir:codingbase, owl:onproperty fhir:conceptbase.text ;, owl:onproperty fhir:conceptbase.text ; owl:allvaluesfrom fhir:string. ### http://hl7.org/fhir/codingbase fhir:codingbase rdf:type owl:class ; rdfs:subclassof fhir:element, owl:onproperty fhir:codingbase.system ; owl:allvaluesfrom fhir:uri,

172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 owl:onproperty fhir:codingbase.system ;, owl:onproperty fhir:codingbase.version ; owl:allvaluesfrom fhir:string, owl:onproperty fhir:codingbase.version ;, owl:onproperty fhir:codingbase.code ; owl:allvaluesfrom fhir:codebase owl:onproperty fhir:codingbase.code ;, owl:onproperty fhir:codingbase.display ; owl:allvaluesfrom fhir:string, owl:onproperty fhir:codingbase.display ;, owl:onproperty fhir:codingbase.primary ;, owl:onproperty fhir:codingbase.primary ; owl:allvaluesfrom fhir:boolean. fhir:codebase rdf:type owl:class ; rdfs:subclassof fhir:element, owl:onproperty fhir:value ; owl:allvaluesfrom xsd:token, owl:onproperty fhir:value ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange xsd:token.

221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 The concrete subclasses of ConceptBase apply the additional restrictions: ### http://hl7.org/fhir/codeableconcept fhir:codeableconcept rdf:type owl:class ; rdfs:subclassof fhir:conceptbase ; rdfs:comment "The set of possible coded values this coding was chosen from or constrained by.". ### http://hl7.org/fhir/coding fhir:coding rdf:type owl:class ; rdfs:subclassof fhir:conceptbase, owl:onproperty fhir:conceptbase.text ; owl:maxcardinality "0"^^xsd:nonNegativeInteger, owl:onproperty fhir:conceptbase.coding ; owl:cardinality "1"^^xsd:nonNegativeInteger. fhir:code rdf:type owl:class ; rdfs:subclassof fhir:conceptbase, owl:onproperty fhir:conceptbase.coding ; owl:allvaluesfrom [ rdf:type owl:class ; owl:intersectionof ( fhir:codingbase owl:onproperty fhir:codingbase.code ; owl:cardinality "1"^^xsd:nonNegativeInteger owl:onproperty fhir:codingbase.display ; owl:maxcardinality "0"^^xsd:nonNegativeInteger owl:onproperty fhir:codingbase.primary ; owl:maxcardinality "0"^^xsd:nonNegativeInteger owl:onproperty fhir:codingbase.system ; owl:onproperty fhir:codingbase.version ;, owl:onproperty fhir:conceptbase.coding ; owl:cardinality "1"^^xsd:nonNegativeInteger.

272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 2 Coding Binding to external terminology (section 1.17.3.3.5 2.1 FHIR XML <AllergyIntolerance xmlns=http://hl7.org/fhir > <id value="1"/> <text> </text> <!-- the date that this entry was recorded --> <recordeddate value="2010-03-01"/> <!-- the patient that actually has the risk of adverse reaction --> <patient> <reference value="http://record/patient/peterpatient"/> <display value="peter Patient"/> </patient> <!-- substance, coded from SNOMED CT--> <substance> <coding> <system value="http://snomed.info/id/"/> <code value="90614001"/> <display value="beta-lactam antibiotic"/> </coding> </substance> <status value="confirmed"/> <criticality value="high"/> <category value="medication"/> </AllergyIntolerance> 2.2 RDF Instance Example This is the raw instance before processing and after in green for inference and red for specific processing @prefix : <http://record/allergyintolerance/>. @prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix sct: <http://snomed.info/id/>. @prefix xml: <http://www.w3.org/xml/1998/namespace>. @prefix xsd: <http://www.w3.org/2001/xmlschema#>. @prefix fhir: <http://hl7.org/fhir/>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix profile: <http://patientsafetyprofile/>. @base <http://record/allergyintolerance/1>. <http://record/allergyintolerance/> rdf:type owl:ontology ; owl:imports <http://patientsafetyprofile>. ### http://record/allergyintolerance/1 <http://record/allergyintolerance/1> rdf:type profile:domainresource, owl:namedindividual ; fhir:resource.id [ rdf:type fhir:id ; fhir:value "1" ; fhir:allergyintolerance.status [ rdf:type fhir:code, <http://hl7.org/fhir/allergyintolerancestatus#confirmed>; fhir:conceptbase.coding [ fhir:codingbase.code [ fhir:value "confirmed" ; fhir:allergyintolerance.patient [ rdf:type fhir:reference ; fhir:reference.reference [ fhir:value "http://record/patient/peterpatient" ; fhir:reference.display [ fhir:value "Peter Patient" ; fhir:reference.link <http://record/patient/peterpatient> ; ; fhir:allergyintolerance.substance [ rdf:type fhir:codeableconcept, <http://snomed.info/id/90614001>; rdfs:label "beta-lactam (antibiotic" ; fhir:conceptbase.coding [ rdf:type fhir:codingbase ; fhir:codingbase.code [ rdf:type fhir:codebase ; fhir:value "90614001" ; fhir:codingbase.system [ rdf:type fhir:string ; fhir:value "http://snomed.info/sct" ; fhir:codingbase.display [ rdf:type fhir:string ; fhir:value "beta-lactam (antibiotic" ; fhir:conceptbase.text [ rdf:type fhir:string ; fhir:value "beta-lactam (antibiotic".

335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 Note the use of a profile binding through the type profile:allergyintolerance which then restricts the types of CodingBase instances. 2.3 FHIR Allergy Intolerance OWL Schema The schema is abridged to show the topics of interest: ### http://hl7.org/fhir/allergyintolerance fhir:allergyintolerance rdf:type owl:class ; rdfs:subclassof fhir:domainresource, owl:onproperty fhir:allergyintolerance.substance ;, owl:onproperty fhir:allergyintolerance.substance ; owl:allvaluesfrom fhir:codeableconcept, Etc... The substance Object Property has no valueset type yet only the restriction that it is a CodeableConcept type. The valueset gets applied through the structural definition or profile binding. 356

357 358 359 360 361 362 363 364 365 2.4 Definitions of Code System, Concept and ValueSet This section is needed to ground the definitions of Coding System, Concept and ValueSet when defined in RDF/OWL. 2.4.1 Code System The system ensures that codes can be unambiguously traced back to their original definition, and that logical comparisons, matching and inferences can be performed consistently by different systems. In RDF/OWL a code system is a namespace in which the code is unique. Since a code forms a fragment of a URI, the code-system forms a prefix to that fragment making it unique. The code system identity and the prefix may not be the same but are related using a property of the code system. URI Source OID http://snomed.info/sct SNOMED CT (IHTSDO 2.16.840.1.113883.6.96 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 The prefix for snomed is http://snomed.info.id/ However, the URI is a member of the fhir:uri class and an additional class is introduced fhir:codesystemuri as a subclass of fhir:uri to define the set that are CodeSystem identifiers. The individual code system may then be declared and referenced: ### http://snomed.info/sct <http://snomed.info/sct> rdf:type fhir:codesystemuri, owl:namedindividual ; fhir:value "http://snomed.info/sct". A specific CodeSystem may be declared as a class which is a set of all the CodingBase individuals restricted by the CodingBase.system property. ### http://snomed.info/sct <http://snomed.info/sct> rdf:type owl:class ; rdfs:subclassof fhir:codingbase_in_systems. 2.4.2 Bridging Ontology This forms a pun with the individual and it is declared in a bridging ontology which is aware of the constraints of Concepts in that Code System. The bridging ontology is aware of FHIR and the external terminology ontologies.

387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 [ rdf:type owl:class ; rdfs:subclassof <http://snomed.info/id/282100009> ; owl:intersectionof ( <http://snomed.info/sct> owl:onproperty fhir:codingbase.code ; owl:somevaluesfrom owl:onproperty fhir:value ; owl:hasvalue "282100009". 2.4.3 Concept A concept may be a single Class in RDF which may in turn be a union of multiple classes based on subclass relationships. 2.4.4 ValueSet Example is substance-code used in AllergyIntolerance 2.4.4.1 Summary Defining URL: http://hl7.org/fhir/valueset/substance-code Name: Substance Code Definition: This value set contains concept codes for specific substances OID: 2.16.840.1.113883.4.642.2.57 (for OID based terminology systems Copyright: This value set includes content from SNOMED CT, which is copyright 2002+ International Health Terminology Standards Development Organisation (IHTSDO, and distributed by agreement between IHTSDO and HL7. Implementer use of SNOMED CT is not covered by this agreement Source Resource XML / JSON 406 407 408 2.4.4.2 Content Logical Definition This value set includes codes from the following code systems: 409 Include codes from http://snomed.info/sct where concept is-a 105590001 410 Include codes from http://snomed.info/sct where concept is-a 373873005

411 412 413 414 415 416 417 2.4.4.3 RDF Definition Since these concepts in snomed are hierarchical classes the valueset is by definition a union of concept classes. However the concept class bound to a system should have a different metatype e.g. systemconcept. A concept class is therefore a supertype of the systemconcept classes. A named Valueset as a class is a union of named systemconcept classes (not a superclass. If an instance of CodingBase is typed to a Valueset then it probably means that the codebase is unknown or to be selected. The FHIR include gets stranslated to a union expression: 418

419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 2.4.5 Examples 2.4.5.1 Example from orim ### CONCEPT DOMAIN ### http://hl7.org/ontology/uv/vocab/cd#actstatus cd:actstatus rdf:type :Class ; :equivalentclass [ rdf:type :Class ; :unionof ( [ rdf:type :Restriction ; :onproperty hl7:vocabularyconcept.codingref ; :somevaluesfrom <urn:oid:2.16.840.1.113883.1.11.159331/recent> [ rdf:type :Restriction ; :onproperty dt:any.nullflavor ; :mincardinality "1"^^xs:nonNegativeInteger ; rdfs:subclassof hl7:conceptdomain. ### CONCEPT ### http://hl7.org/ontology/uv/vocab/cs/actstatus/concept <http://hl7.org/ontology/uv/vocab/cs/actstatus/concept> rdf:type :Class ; rdfs:subclassof hl7:vocabularyconcept. ### http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept> rdf:type :Class ; rdfs:subclassof <http://hl7.org/ontology/uv/vocab/cs/actstatus/concept>. ### http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept#active <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept#active> rdf:type :Class ; :equivalentclass <urn:oid:2.16.840.1.113883.5.14/2011-12-20/concept#active> ; rdfs:subclassof <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept>, <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept#normal>. ### urn:oid:2.16.840.1.113883.5.14/2011-12-20/concept#active <urn:oid:2.16.840.1.113883.5.14/2011-12-20/concept#active> rdf:type :Class ; :equivalentclass <urn:oid:2.16.840.1.113883.5.14/recent/concept#active> ; rdfs:subclassof <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept>, <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept#normal>. ### urn:oid:2.16.840.1.113883.5.14/recent/concept#active <urn:oid:2.16.840.1.113883.5.14/recent/concept#active> rdf:type :Class ; rdfs:subclassof <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept>, <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20/concept#normal>. ### VALUESET ### http://hl7.org/ontology/uv/vocab/vs/actstatus vs:actstatus rdf:type :Class ; :equivalentclass <http://hl7.org/ontology/uv/vocab/vs/actstatus/2011-12-20>, <urn:oid:2.16.840.1.113883.1.11.159331> ; rdfs:subclassof hl7:valueset. ### http://hl7.org/ontology/uv/vocab/vs/actstatusactive vs:actstatusactive rdf:type :Class ; :equivalentclass <http://hl7.org/ontology/uv/vocab/vs/actstatusactive/2011-12-20>, <urn:oid:2.16.840.1.113883.1.11.20023> ; rdfs:subclassof hl7:valueset.

485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 ### http://hl7.org/ontology/uv/vocab/vs/actstatus/2011-12-20 <http://hl7.org/ontology/uv/vocab/vs/actstatus/2011-12-20> rdf:type :Class ; :equivalentclass <urn:oid:2.16.840.1.113883.1.11.159331/2011-12-20>, [ rdf:type :Class ; :intersectionof ( [ rdf:type :Restriction ; :onproperty hl7:coding.codesystemref ; :hasvalue <urn:oid:2.16.840.1.113883.5.14> [ rdf:type :Restriction ; :onproperty hl7:coding.codesystemversionref ; :hasvalue <urn:oid:2.16.840.1.113883.5.14/recent> ; rdfs:subclassof hl7:valueset. ### http://hl7.org/ontology/uv/vocab/vs/actstatusactive/2011-12-20 <http://hl7.org/ontology/uv/vocab/vs/actstatusactive/2011-12-20> rdf:type :Class ; :equivalentclass <urn:oid:2.16.840.1.113883.1.11.20023/2011-12-20>, [ rdf:type :Class ; :intersectionof ( [ rdf:type :Restriction ;:onproperty hl7:coding.conceptref ; :somevaluesfrom <urn:oid:2.16.840.1.113883.5.14/2011-12-20/concept#active> [ rdf:type :Restriction ; :onproperty hl7:coding.codesystemref ; :hasvalue <urn:oid:2.16.840.1.113883.5.14> [ rdf:type :Restriction ; :onproperty hl7:coding.codesystemversionref ; :hasvalue <urn:oid:2.16.840.1.113883.5.14/recent> ; rdfs:subclassof hl7:valueset. ### CODE SYSTEM ### http://hl7.org/ontology/uv/vocab/cs/actstatus cs:actstatus rdf:type hl7:codesystem, :NamedIndividual, [ rdf:type :Restriction ; :onproperty hl7:codesystem.versionref ; :allvaluesfrom [ rdf:type :Restriction ; :onproperty hl7:codesystemversion.codesystem ; :hasvalue "2.16.840.1.113883.5.14"^^xs:string, [ rdf:type :Restriction ; :onproperty hl7:codesystem.versionref ; :allvaluesfrom [ rdf:type :Class ; :oneof ( <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20> ; hl7:codesystem.id "2.16.840.1.113883.5.14"^^xs:string ; :sameas <urn:oid:2.16.840.1.113883.5.14>. ### http://hl7.org/ontology/uv/vocab/cs/actstatus/recent <http://hl7.org/ontology/uv/vocab/cs/actstatus/recent> rdf:type hl7:codesystemversion, :NamedIndividual ; :sameas <urn:oid:2.16.840.1.113883.5.14/recent>. ### http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20 <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20> rdf:type hl7:codesystemversion, :NamedIndividual, [ rdf:type :Restriction ; :onproperty hl7:codesystemversion.codingref ; :allvaluesfrom [ rdf:type :Restriction ;:onproperty hl7:coding.codesystemversion ; :hasvalue "2011-12-20"^^xs:string

554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587, [ rdf:type :Restriction ; :onproperty hl7:codesystemversion.codingref ; :allvaluesfrom [ rdf:type :Class ; :oneof ( <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#nullified> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#normal> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#suspended> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#new> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#obsolete> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#aborted> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#active> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#held> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#completed> <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#cancelled>, [ rdf:type :Restriction ; :onproperty hl7:codesystemversion.codingref ; :allvaluesfrom [ rdf:type :Restriction ;:onproperty hl7:coding.codesystemref ; :hasvalue cs:actstatus ; hl7:codesystemversion.codesystem "2.16.840.1.113883.5.14"^^xs:string ; hl7:codesystemversion.versiondate "2011-12-20"^^xs:string ; :sameas <urn:oid:2.16.840.1.113883.5.14/2011-12-20>. ### http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#active <http://hl7.org/ontology/uv/vocab/cs/actstatus/2011-12-20#active> rdf:type hl7:coding,:namedindividual ; hl7:coding.code "active"^^xs:string. 2.4.5.2 ValueSet schema in FHIR A ValueSet individual will have define, compose and expansion object properties to applicable objects. The following RDF samples show a direct translation of the metamodel viewpoint.

588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 ### http://hl7.org/fhir/valueset fhir:valueset rdf:type owl:class ; rdfs:subclassof fhir:domainresource, owl:onproperty fhir:valueset.define ; owl:allvaluesfrom fhir:valueset.define, owl:onproperty fhir:valueset.define ;, owl:onproperty fhir:valueset.compose ; owl:allvaluesfrom fhir:valueset.compose, owl:onproperty fhir:valueset.expansion ;, owl:onproperty fhir:valueset.expansion ; owl:allvaluesfrom fhir:valueset.expansion, owl:onproperty fhir:valueset.compose ;. ### http://hl7.org/fhir/valueset.compose fhir:valueset.compose rdf:type owl:class ; rdfs:subclassof fhir:backboneelement. ### http://hl7.org/fhir/valueset.concept fhir:valueset.concept rdf:type owl:class ; rdfs:subclassof fhir:backboneelement, owl:onproperty fhir:valueset.concept.display ; owl:allvaluesfrom fhir:string, owl:onproperty fhir:valueset.concept.code ; owl:cardinality "1"^^xsd:nonNegativeInteger, owl:onproperty fhir:valueset.concept.code ; owl:allvaluesfrom fhir:code, owl:onproperty fhir:valueset.concept.definition ;, owl:onproperty fhir:valueset.concept.display ;, owl:onproperty fhir:valueset.concept.definition ; owl:allvaluesfrom fhir:string.

648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 ### http://hl7.org/fhir/valueset.define fhir:valueset.define rdf:type owl:class ; rdfs:subclassof fhir:backboneelement, owl:onproperty fhir:valueset.define.system ; owl:allvaluesfrom fhir:uri, owl:onproperty fhir:valueset.define.system ; owl:cardinality "1"^^xsd:nonNegativeInteger, owl:onproperty fhir:valueset.define.concept ; owl:allvaluesfrom fhir:valueset.concept. ### http://hl7.org/fhir/valueset.expansion fhir:valueset.expansion rdf:type owl:class ; rdfs:subclassof fhir:backboneelement. 669

670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 2.5 FHIR internal System and Coding bindings (OWL Schema The system is inclusive of all the terms within it and all the instances of those terms. @prefix allergy-intolerance-status: <http://hl7.org/fhir/allergy-intolerance-status#>. ### http://hl7.org/fhir/allergy-intolerance-status fhir:allergy-intolerance-status rdf:type owl:class ; rdfs:subclassof fhir:valueset-system, [ rdf:type owl:class ; owl:unionof ( allergy-intolerance-status:confirmed allergy-intolerance-status:entered-in-error allergy-intolerance-status:refuted allergy-intolerance-status:resolved allergy-intolerance-status:unconfirmed, owl:onproperty fhir:codingbase.system ; owl:allvaluesfrom owl:onproperty fhir:value ; owl:hasvalue "http://hl7.org/fhir/allergy-intolerance-status" ; fhir:prefix "http://hl7.org/fhir/allergy-intolerance-status#". ### http://hl7.org/fhir/allergy-intolerance-status#confirmed allergy-intolerance-status:confirmed rdf:type owl:class ; rdfs:label "Confirmed" ; rdfs:subclassof fhir:allergy-intolerance-status, owl:onproperty fhir:codingbase.code ; owl:allvaluesfrom owl:onproperty fhir:value ; owl:hasvalue "confirmed" ; rdfs:comment "A high level of certainty about the propensity for a reaction to the identified Substance, which may include clinical evidence by testing or rechallenge.". ### http://hl7.org/fhir/allergy-intolerance-status#entered-in-error allergy-intolerance-status:entered-in-error rdf:type owl:class ; rdfs:label "Entered In Error" ; rdfs:subclassof fhir:allergy-intolerance-status, owl:onproperty fhir:codingbase.code ; owl:allvaluesfrom owl:onproperty fhir:value ; owl:hasvalue "entered-in-error" ; rdfs:comment "The statement was entered in error and is not valid". The system Class definition shows it is a subclass of the abstract valueset-system and restricts its members to the CodingBase.system. There is also an annotation property fhir:prefix which defines the structure of the URI prefix when naming the members of the system. It causes the @prefix declaration. Two members are shown confirmed and entered-in-error. They are subclasses of allergy-intolerance-status and have the restrictions of that class so they do not have to declare CodingBase.system restrictions.

728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 2.6 System and codings external RDF representation From the SNOMED RDF: <http://snomed.info/id/138875005> rdf:type owl:class ; rdfs:label "SNOMED CT Concept". <http://snomed.info/id/105590001> rdf:type owl:class ; rdfs:label "Substance (substance" ; rdfs:subclassof <http://snomed.info/id/138875005>. <http://snomed.info/id/373873005> rdf:type owl:class ; rdfs:label "Pharmaceutical / biologic product (product" ; rdfs:subclassof <http://snomed.info/id/138875005>. <http://snomed.info/id/346325008> rdf:type owl:class ; rdfs:label "Antibacterial drugs (product" ; rdfs:subclassof <http://snomed.info/id/373873005>. <http://snomed.info/id/90614001> rdf:type owl:class ; rdfs:label "beta-lactam antibiotic" ; rdfs:subclassof <http://snomed.info/id/346325008>. The system is defined further in the FHIR ontology @prefix sct: <http://snomed.info/id/>. ### http://snomed.info/sct <http://snomed.info/sct> rdf:type owl:class ; rdfs:subclassof fhir:valueset-system ; fhir:prefix "http://snomed.info/id/". 757

758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 2.7 Valueset Definition A ValueSet is somewhat similar to a value-set-system in that it applies constraints to the members but they can be from different systems. The specific ValueSet is a Class which is a union of Concept classes from one or more coding-systems. It is expected that this representation can be computed from the FHIR representation. 2.7.1.1 Anonymous codings Here is the definition of the specific ValueSet as a Class with restrictions on values not types: <http://hl7.org/fhir/vs/allergy-intolerance-status> rdf:type owl:class ; rdfs:label "Allergy Intolerance Status Value Set" ; rdfs:subclassof fhir:valueset, [ rdf:type owl:class ; owl:intersectionof ( owl:onproperty fhir:codingbase.code ; owl:somevaluesfrom [ rdf:type owl:class ; owl:unionof ( owl:onproperty fhir:value ; owl:hasvalue "confirmed" owl:onproperty fhir:value ; owl:hasvalue "entered-in-error" owl:onproperty fhir:value ; owl:hasvalue "refuted" owl:onproperty fhir:value ; owl:hasvalue "resolved" owl:onproperty fhir:value ; owl:hasvalue "unconfirmed" owl:onproperty fhir:codingbase.system ; owl:allvaluesfrom owl:onproperty fhir:value ; owl:hasvalue "http://fhir/allergy-intolerance-status". If the valueset needs to identify CodingBase restrictions from other systems then the restriction will have a slightly different structure. The example here shows the optimization for a single system (Define. 2.7.2 Named codings If named codings are used then the expression can be greatly simplified since the restrictions are in the named class. <http://hl7.org/fhir/vs/allergy-intolerance-status> rdf:type owl:class ; rdfs:label "Allergy Intolerance Status Value Set" ; rdfs:subclassof fhir:valueset, [ rdf:type owl:class ; owl:unionof ( allergy-intolerance-status:confirmed allergy-intolerance-status:entered-in-error allergy-intolerance-status:refuted allergy-intolerance-status:resolved allergy-intolerance-status:unconfirmed. 807

808 809 810 811 812 813 814 815 816 817 818 2.8 ValueSet schema in the metamodel A metamodel is introduced when Classes in the Model are instances of MetaClasses which are subclasses of owl:class. In general the Element Definition (1.23.0 is a metamodel. In the metamodel viewpoint, an instance of ValueSet will have object property assertions to a instances of ValueSet.Define if all the codes are taken from a single system b instances of ValueSet.Compose if the codes come from multiple systems and allow inclusion and exclusion c instances of ValueSet.Expansion if the valueset is converted into an enumerated list A ValueSet individual will have define, compose and expansion object properties to applicable objects. However, these object property semantics are not understood by RDF or OWL. They are translated in the Model to subclass, intersection and union relationships between classes. 819

820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 3 Resource References 3.1 Githib example :resource a fhir:observation; fhir:contained fhir:observation\#23; fhir:observation.subject [ fhir:reference.reference fhir:observation\#23. fhir:observation\#23 a fhir:patient; fhir:patient.name [ fhir:text "John Smith. This example is partially in line with the resolved example below. Even if it were a URL it will not be understood by reasoners or SPARQL. 3.2 Subgroup example 3.2.1 FHIR XML <AllergyIntolerance xmlns="http://hl7.org/fhir"> <id value="1"/> <text> </text> <!-- the date that this entry was recorded --> <recordeddate value="2010-03-01"/> <!-- the patient that actually has the risk of adverse reaction --> <patient> <reference value="http://record/patient/peterpatient"/> <display value="peter Patient"/> </patient> </AllergyIntolerance> 3.2.2 RDF Data After processing (acquiring the resource and importing fhir:allergyintolerance.patient [ fhir:reference.display [ fhir:value "Peter Patient" ; fhir:reference.reference [ fhir:value "http://record/patient/peterpatient" ; fhir:reference.link <http://record/patient/peterpatient> ; Note that Reference object has been supplemented by the URI of the Reference.link. AllergyIntolerance.patient.link can represent the property chain as shown earlier. A reverse property of the property chain can get the resources for a particular patient. ### http://hl7.org/fhir/allergyforpatient fhir:allergyforpatient rdf:type owl:objectproperty ; owl:inverseof fhir:allergyintolerance.patient.link. ### http://hl7.org/fhir/allergyintolerance.patient.link fhir:allergyintolerance.patient.link rdf:type owl:objectproperty ; owl:propertychainaxiom ( fhir:allergyintolerance.patient fhir:reference.link. The Reference.link is declared when the resource has been imported and closure has been achieved. This allows the consumer to determine whether the import has happened or not and can trigger that function. If the Reference.link is pre-established there will be no indication in the import and the Resource instance will be empty.

868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 3.2.3 FHIR OWL Schema ### http://hl7.org/fhir/reference fhir:reference rdf:type owl:class ; rdfs:subclassof fhir:element, owl:onproperty fhir:reference.reference ; owl:allvaluesfrom fhir:string, owl:onproperty fhir:reference.reference ;, owl:onproperty fhir:reference.display ; owl:allvaluesfrom fhir:string, owl:onproperty fhir:reference.display ;, owl:onproperty fhir:reference.link ; owl:allvaluesfrom fhir:domainresource, owl:onproperty fhir:reference.link ;. 899

900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 4 Bundle Some preliminary notes: A Bundle instance has no special namespace semantics and therefore it can be referenced as an Ontology record/bundle/123. The contents of the Bundle.Entry have URIs and would be imported into the Bundle Ontology. The Bundle.Link will be treated as a Reference and Bundle.Link.link will be created when the referenced resource has been resolved. 5 URI Naming 5.1 Githib example No example 5.2 Subgroup example Detailed rules for URI construction must be made for internally referenced resource class instances. The example has proposed URI constructs where 1. the Resource namespace precedes the assigned identifier for the contained instance 2. the root resource object has an URI identifier identical to the resource class instance URI Thus <http://record/allergyintolerance/1> has record/allergyintolerance as the resource namespace with 1 as the contained instance identifier. It is also intended that the resource namespace should also be the ontology IRI. This is to be tested. <http://record/allergyintolerance/> rdf:type owl:ontology ; 920

921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 6 Ordering 6.1 Githib example No example 6.2 RDF individual ordering example Simple integer DataProperty fhir:index can be applied to individuals of subclasses of fhir:element ### http://hl7.org/fhir/index fhir:index rdf:type owl:datatypeproperty ; rdfs:range fhir:index-primitive. ### http://hl7.org/fhir/index-primitive fhir:index-primitive rdf:type rdfs:datatype ; owl:equivalentclass [ rdf:type rdfs:datatype ; owl:ondatatype xsd:integer ; owl:withrestrictions ( [ xsd:mininclusive 1. ### http://hl7.org/fhir/element fhir:element rdf:type owl:class ; rdfs:label "Element" ; rdfs:subclassof owl:onproperty fhir:element.extension ; owl:somevaluesfrom fhir:extension, owl:onproperty fhir:element.id ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange fhir:id-primitive, owl:onproperty fhir:index ; owl:maxqualifiedcardinality "1"^^xsd:nonNegativeInteger ; owl:ondatarange fhir:index-primitive ; rdfs:comment "The base element used for all FHIR elements and resources - allows for them to be extended with extensions".. In general fhir:value and fhir:element.id are converted to an attribute in XML. fhir:index dictates the sequence only. 6.3 RDF Object Property Ordering example Where object properties need to be ordered to construct the sequence of properties in XML, the fhir:index is defined as an annotation property on the Object Property. The example of ordered properties inside CodingBase is shown: ### http://hl7.org/fhir/index fhir:index rdf:type owl:annotationproperty.

967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 ### http://hl7.org/fhir/codingbase.system fhir:codingbase.system rdf:type owl:objectproperty ; fhir:index 1 ; ### http://hl7.org/fhir/codingbase.version fhir:codingbase.version rdf:type owl:objectproperty ; fhir:index 2. ### http://hl7.org/fhir/codingbase.code fhir:codingbase.code rdf:type owl:objectproperty ; fhir:index 3. ### http://hl7.org/fhir/codingbase.display fhir:codingbase.display rdf:type owl:objectproperty ; fhir:index 4 ; ### http://hl7.org/fhir/codingbase.primary fhir:codingbase.primary rdf:type owl:objectproperty ; fhir:index 5 ; 988

989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 7 Profiles The example shows profile ontology restricting the Valueset of Substance: The AllergyIntolerance Resource is declared again inside the Profile ontology. <http://record/allergyintolerance/1> rdf:type profile:allergyintolerance, owl:namedindividual ; This prefix on the rdf:type profile:allergyintolerance binds to the Profile and causes typing to the profile:allergyintolerance where further restrictions (and extensions are added. AllergyIntolerance.substance.coding is defines as a property chain and allows constraints to be applied to the codings for substance allergy:allergyintolerance.substance.coding rdf:type owl:objectproperty ; owl:inverseof fhir:coding.resource ; owl:propertychainaxiom ( allergy:allergyintolerance.substance fhir:conceptbase.coding. Here is a sample of the Profile Turtle. ### http://patientsafetyprofile/allergyintolerance profile:allergyintolerance rdf:type owl:class ; owl:equivalentclass [ rdf:type owl:class ; owl:intersectionof ( profile:domainresource owl:onproperty fhir:tag ; owl:hasvalue "AllergyIntolerance" ; rdfs:subclassof fhir:allergyintolerance, owl:onproperty <http://hl7.org/fhir/allergyintolerance/allergyintolerance.substance> ; owl:allvaluesfrom <http://patientsafetyprofile/substance-type>. ### http://patientsafetyprofile/domainresource profile:domainresource rdf:type owl:class ; rdfs:subclassof fhir:domainresource. ### http://patientsafetyprofile/substance-type <http://patientsafetyprofile/substance-type> rdf:type owl:class ; rdfs:subclassof fhir:valueset, [ rdf:type owl:class ; owl:unionof ( <http://snomed.info/id/105590001> <http://snomed.info/id/373873005>. 1036