Common Terminology Services Edition 2 (CTS )

advertisement
Common Terminology
Services
Edition 2 (CTS2)
Harold Solbrig
Mayo Clinic
Rochester, MN
Outline
•  Terminology Services – what are they
and why do we care?
•  Common Terminology Services – a
brief history
•  CTS2 from flight level 200
•  CTS2 and the Semantic Web
“Terminology”
A generic “term” that covers a broad spectrum:
•  Code / Value pairs – Country codes, airline codes,
fare codes, …
•  Controlled vocabularies – when United Airlines
uses “confirmed reservation”, they mean “…”
•  Thesauri – if you’re are looking for information on
the Tiger Swallowtail, you might also look at
books with butterfly pictures, books about insect
migration, … (BT, NT, RT, note, …)
“Terminology”
(continued)
•  Classifications – “buckets” for various
statistical and information gathering
purposes. Example: ICD-9-CM – 250.01
“Diabetes Mellitus with complication, type
1, not stated as uncontrolled”
•  Formal Logic Systems – Web Ontology
Language (OWL), OBO, Common Logic, ….
Classes, individuals relationships.
SNOMED-CT, Gene Ontology, FMA, CYC,
SUMO, …
Why Terminology Services?
Start with a simple example – the ISO
Country Codes:
•  Where can you download them?
•  What formats are they available in?
•  How are they organized? How do I list just
EU countries? Countries in Africa?
•  Oh – they change???? How do I know
when a change occurs? How do I know
what happened?
Why Terminology Services?
Ok – I’ve downloaded them…
•  I create a set of SQL tables…
•  … construct some queries to create a
dropdown list for a form
•  … write an Ajax application for my
web page
•  … write some more queries to print
the full names on a report
Why Terminology Services?
•  Discover the accounting package
needs three character codes
•  Ack – I repeat the download and
write a conversion
•  Discover the accounting package
hasn’t updated their tables since
1990… - what do we do with “YU”
•  Discover ISO reuses codes (!!!)
Why Terminology Services?
•  We’ve just been bought… our new
owner doesn’t use ISO codes
•  … we’ve got to start translating
between ISO codes and 01-299 codes
•  … and they’ve got “YU”…
•  … and they now need to know what
currencies are (and were) used in a
given country…
Why Terminology Services?
Take the scenario above and figure that a
reasonably complex business such as a medical
practice may have to deal with
…. hundreds of tables / classifications /
relationships each with its own formats, labels,
release cycles, rules
… many applications that define, create and
consume these terminologies
… other businesses with the same information but
different codes and formats
…. An ever increasing load of reporting / analysis /
billing requirements …
Why Terminology Services
Requirements
At some point, it begins to make sense
to try to come up with:
•  “A” catalog of terminologies
•  Who maintains them, what they
are for, how often they are
updated, what they cost, …
•  A simple way to download, deploy
and update their content
Why Terminology Services?
Requirements
A way to ask similar queries in the same
way:
•  By textual content – “All currencies that
use the ‘$’ symbol”
•  By organization – “All EU countries”
•  By relationship – “All countries that share
a border with France”
•  By secondary set – “All countries that are
HL7 members”
Why Terminology Services?
Requirements
•  … reasoning
•  … maps between terminologies
•  … incremental updates
•  … local extensions
•  … “binding” to data elements
•  … different output formats
•  …
Why Terminology Services?
•  SOA and information exchange
require shared semantics
(terminology)
•  Shared semantics, in turn, requires
shared terminology
•  No one can afford to do their own
research, write their own importers,
access methods, Ajax widgets,
update mechanisms, etc.
Why Terminology Services?
Terminology Service Standards
provide:
•  Semantics for terminology
•  Shared exchange models
•  Complete and robust requirements
•  Common API’s
Common Terminology Services
Edition 2
Derives from:
•  OMG LQS Standard (1999)
•  OO Model, read only, but laid most of
the foundation for subsequent efforts
•  HL7 CTS Specification (2004)
•  ANSI and ISO Standard
•  SOA Model, read only, reduced scope
from LQS
Common Terminology Services
Edition 2
•  Derives from (continued):
•  Mayo LexGrid information model
(2002 – present)
•  NCI LexEVS (2005 – present)
•  HL7 Service Functional Model
•  (requirements)
•  Work and insights of many
individuals and organizations…
CTS2
Design Philosophy
Simple things should be simple –
Charlie Mead’s “linear value
proposition”
Representational State Transfer
Architectural Style …
… but will support SOA(p), POJO or
CTS2
Component Resources
•  Code System
•  Concept Domain
•  Code System
•  Concept Domain
•  Entity Description
•  Association
•  Map Catalog
•  Map Version
•  Value Set Catalog
•  Value Set Definition
•  Resolved Value Set
Catalog
Version Catalog
Catalog
Binding
CTS2
Functional Profiles
•  Read
•  Query
•  Import / Export
•  Update
•  History
•  Maintenance
•  Temporal
•  (specialized)
CTS2- codesystemversions
CTS2- entity
CTS2
Key points:
1) CTS2 implementations are designed
to be distributed and/or federated
•  Everything can be linked to
everything else via hyperlinks
•  Partial or complete copies can be
distributed across the network
CodeSystemCatalogEntry
CodeSystemCatalog
http://
informatics.mayo.edu/
cts2/Codesystem s
http://rest.bioontology.org/
cts2/codesystem/sct?
apikey=…
SNOMED CT
http://who.int/icd/cts2/codesystem/…
icd9
ICD-9
ICD-10
…
http://nlm.nih.gov/cts2/MeSH/
MeSH
Association
http://
informatics.mayo.edu/
cts2/Codesystem/wine/
version/20030818/
association/1
subject: wine:Wine
predicate: rdfs:subClassOf
EntityDescription
http://rest.bioontology.org/cts2/
codesystem/wine/…/Wine…
Wine
http://informatics.mayo.edu/cts2/
codesystem/rdfs/…subClassOf
target: food:PotableLiquid
subClassOf
http://nlm.nih.gov/cts2/codesystem/
food/…/food:PotableLiquid
MeSH
CTS2
Key points:
2) A CTS2 implementation only needs
to build what is required…
… useful CTS2 compliant services can
be constructed with an XML editor and
a file system or basic Apache server
CTS2
Key points:
3) The CTS2 specification is not
intended to be restrictive (aka strict
compliance) – it is intended to be
extensible – both structurally and
functionally …
… it specifies a common way to do
common things.
CTS2 and the Semantic Web
CTS2 can run on top of an RDF triple
store
•  Specifies consistent structure
•  Provides consistent tags
•  Provides URI resolution
CTS2 and the Semantic Web
Consistent Structure
•  Translatable into XML, JSON, HTML,
…
•  Easily consumed by Ajax and
REST clients
•  Consistent tags
•  “definition” is always definition
when it is present
URI Resolution
CTS2 makes a clear distinction
between
•  what is being described (e.g. “Food”,
“Afghanistan”)
•  the description (e.g. the Food Ontology
description of “Food”, the ISO Country
Codes description of “Afghanistan”)
•  the rendering (e.g. BioPortal’s CTS2
rendering of “Food”, ISO’s RDF rendering
of “Afghanistan”)
CTS2
Statement Model
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2
Of interest to Ontology Community
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
URI vs. Namespace/Name
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2
Of interest to Ontology Community
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
Flattened Lists
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2
Of interest to Ontology Community
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
Embedded BNODEs
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2
Of interest to Ontology Community
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
Embedded Reification
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2
Of interest to Ontology Community
class Statement
Changeable
Statement
subject: StatementSubject
predicate: URIAndEntityName
associatedAttribute: ModelAttributeReference [0..1]
source: SourceAndRoleReference [0..*]
assertedBy: CodeSystemVersionReference
assertedIn: CodeSystemVersionReference
::Changeable
entryID: PersistentURI {readOnly}
entryState: EntryState
status: StatusReference [0..1]
Identity
StatementTarget
targetType: StatementTargetType
target externalIdentifier: String [0..1]
literal: OpaqueData [0..1]
1..*
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
bnode: AnonymousStatement [0..*]
target
1
AnonymousStatement
qualifier 0..*
predicate: PredicateReference
target: StatementTarget
statmentQualifier: Property [0..*]
StatementQualifier
qualifierPredicate: PredicateReference
associatedAttribute: ModelAttributeReference [0..1]
StatementSubject
subjectType: StatementSubjectType
resource: ExternalURI [0..1]
entity: URIAndEntityName [0..1]
«enumeration»
StatementSubjectType
RESOURCE_SUBJECT
ENTITY_SUBJECT
«enumeration»
StatementTargetType
RESOURCE
ENTITY
LITERAL
BNODE
EMPTY
CTS2 – Next Steps
Value Set Bindings
OMV
HL7 / IHTSDO
Outstanding
CTS2
Summary
Designed to address a broad spectrum
of needs when it comes to
“terminological resources”
Designed for ease of use
•  Resource oriented (RESTful)
architecture
•  Federation and distribution
•  Fine-grained implementation
CTS2
Summary
Provides a bridge between SPARQL /
RDF triples and structured terminology
CTS2
STATUS
Officially accepted as an OMG
specification June 2011
•  Finalization Task Force (FTF) in place
– due for completion June 2012
•  Reference implementations
underway
•  Next steps in HL7 court
CTS2
Resources
CTS 2 Submission Wiki:
http://informatics.mayo.edu/cts2
OMG Finalization Task Force Contact
Information:
E-Mail to cts2-ftf@omg.org
Download