Commit 0f5461cf authored by R.W.Majeed's avatar R.W.Majeed
Browse files

Corrections to ontology

parent 52f075dd
Uniqueness of notation
----------------------
According to SKOS, a single skos:Concept may contain 0, 1 or more notations.
Each notation (literal+datatype) uniquely identifies a Concept within a ConceptScheme.
Processing ontologies with Jena
-------------------------------
......
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix nom: <http://sekmi.de/histream/nomenclature#> .
@prefix : <http://sekmi.de/histream/concepts#> .
nom: dc:title "HIStream concept ontology nomenclature base".
nom:nomenclature a rdfs:Class ;
rdfs:subClassOf rdfs:Datatype .
nom:CodingSystem a rdfs:Class ;
rdfs:subClassOf rdfs:Datatype .
nom:enum a rdfs:Class ;
rdfs:subClassOf rdfs:Datatype .
nom:ConceptModifier a rdfs:Class ;
rdfs:subclassOf skos:Concept .
# TODO: rdfs:Property correct???
nom:valueType a rdfs:Property .
nom:valueEnum a rdfs:Property .
nom:enumEntry a rdfs:Class .
nom:constValue a rdfs:Class .
nom:hasModifier a rdfs:Property .
......@@ -6,6 +6,7 @@
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix i2b2: <http://sekmi.de/skos-i2b2#> .
@prefix dwh: <http://sekmi.de/histream/dwh#> .
@prefix snomed: <http://purl.bioontology.org/ontology/SNOMEDCT/>
:FF.2235.qspab_60 a dwh:Concept ;
......@@ -23,4 +24,8 @@
:FF.XXXX.example a dwh:Concept ;
dwh:valueType :YesNoEnum .
:YesNoEnum owl:oneOf ("Y"^^xsd:string "N"^^xsd:string) .
# TODO: need to implement labels for enum values
:YesNoEnum owl:oneOf (
[rdf:value "Y"^^xsd:string ; prefLabel "Ja"@de]
[rdf:value "N"^^xsd:string ; prefLabel "Nein"@de]
) .
......@@ -24,10 +24,13 @@
:Pupillenweitenuntersuchung a skos:Concept ;
# wert ist weite
owl:hasPart xxxx ; # subclass of 164020000
owl:hasPart :pupilWidth ; # bzw. [subclassOf snomed:164020000; skos:prefLabel "Pupillenweite"@de]
# z.B. snomed:37125009 # wide pupil
owl:hasPart eyeStructure; # one of 18944008, 8966001 (left eye, right eye)
owl:hasPart :eyeStructure ; # [oneOf (snomed:18944008 snomed:8966001); skos:prefLabel "Auge"@de] (left eye, right eye)
# z.B. snomed:8966001 # left eye (structure)
skos:notation snomed:XXX .
:eyeStructure
# modifier ist seite
......
......@@ -4,10 +4,10 @@
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix nom: <http://sekmi.de/histream/nomenclature#> .
@prefix : <http://sekmi.de/histream/concepts#> .
@prefix dwh: <http://sekmi.de/histream/dwh#> .
@prefix : <http://sekmi.de/histream/skos/tests#> .
nom: dc:title "HIStream concept ontology for testing".
: dc:title "HIStream concept ontology for testing".
:TestScheme a skos:ConceptScheme ;
skos:hasTopConcept :TestData .
......@@ -23,18 +23,17 @@ nom: dc:title "HIStream concept ontology for testing".
:TestEnumConcept a skos:Concept;
skos:inScheme :TestData;
nom:valueType nom:enum;
nom:valueEnum [
nom:enumEntry [ nom:constValue "1"^^xsd:string; skos:prefLabel "1_de"@de; skos:prefLabel "1_en"@en ] ;
nom:enumEntry [ nom:constValue "2"^^xsd:string; skos:prefLabel "2_de"@de; skos:prefLabel "2_en"@en ] ;
] ;
dwh:valueType :testEnum;
skos:prefLabel "Enum_label_de"@de;
skos:prefLabel "Enum_label_en"@en;
skos:notation "Enum"^^:TestCS .
:testEnum owl:oneOf ([rdf:value "1"^^xsd:string; skos:prefLabel "1_de"@de; skos:prefLabel "1_en"@en ]
[rdf:value "2"^^xsd:string; skos:prefLabel "2_de"@de; skos:prefLabel "2_en"@en ]) .
:TestIntegerConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:integer ;
dwh:valueType xsd:integer ;
skos:prefLabel "Integer_label_en"@en ;
skos:prefLabel "Integer_label_de"@de ;
dc:description "Description_de"@de ;
......@@ -43,12 +42,12 @@ nom: dc:title "HIStream concept ontology for testing".
:TestStringConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:string ;
dwh:valueType xsd:string ;
skos:prefLabel "String_label_en"@en ;
skos:notation "T:type:str" .
:TestDecimalConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:decimal ;
dwh:valueType xsd:decimal ;
skos:prefLabel "Decimal_label_en"@en ;
skos:notation "T:type:dec" .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix nom: <http://sekmi.de/histream/nomenclature#> .
@prefix : <http://sekmi.de/histream/concepts#> .
: dc:title "HIStream concept ontology".
:versionOf a owl:ObjectProperty;
rdfs:domain skos:Concept;
rdfs:range skos:Concept.
:hasVersion a owl:ObjectProperty;
owl:inverseOf :versionOf;
rdfs:domain skos:Concept;
rdfs:range skos:Concept.
:Diagnoses a skos:ConceptScheme;
skos:hasTopConcept :Icd10.
:Procedures a skos:ConceptScheme;
skos:hasTopConcept :Ops301.
:Icd10 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "Diagnosen (ICD-10)"@de;
skos:prefLabel "Diagnoses (ICD-10)"@en;
skos:narrower :Icd10a00b99;
dc:description "Diagnosen nach ICD-10".
:Icd10a00b99 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "A00-B99"@de;
skos:narrower :Icd10a00a09;
dc:description "Bestimmte infektiöse und parasitäre Krankheiten"@de.
:Icd10a00a09 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "Infektiöse Darmkrankheiten (A00-A09)"@de;
skos:narrower :Icd10_a00_9;
dc:description "Infektiöse Darmkrankheiten"@de.
:Icd10_a00_9 a skos:Concept;
skos:inScheme :Diagnoses;
skos:notation "A00.9"^^nom:icd10_2010;
skos:notation "A00.9"^^nom:icd10_2011;
skos:notation "A00.9"^^nom:icd10_2012;
skos:notation "I10-2011:A00.9"^^xsd:string;
skos:prefLabel "A00.9: Cholera, nicht näher bezeichnet"@de .
:Ops301 a skos:Concept;
skos:inScheme :Procedures;
skos:prefLabel "Prozeduren (OPS)"@de;
skos:prefLabel "Procedures (OPS/German ICPM)"@en;
dc:description "Prozeduren und Therapien nach OPS".
:Patient a skos:ConceptScheme;
skos:hasTopConcept :PatientConcept.
:PatientConcept a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Patient"@de;
skos:prefLabel "Patient"@en;
skos:narrower :MasterData;
skos:narrower :Timepoints.
:MasterData a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Stammdaten"@de;
skos:prefLabel "Master data"@en;
skos:narrower :Age;
skos:narrower :Sex.
:Age a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Alter"@de;
skos:prefLabel "Age"@en;
skos:notation "p:age"^^xsd:string.
:Sex a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Geschlecht"@de;
skos:prefLabel "Sex"@en;
skos:notation "p:sex"^^xsd:string.
:Timepoints a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Zeitpunkte"@de;
skos:prefLabel "Time points"@en;
skos:narrower :Admission;
skos:narrower :Discharge;
dc:description "Zeitpunkte xxx".
:Admission a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Aufnahme"@de;
skos:prefLabel "Admission"@en;
skos:narrower :AdmissionI;
skos:narrower :AdmissionO;
skos:narrower :AdmissionE.
:AdmissionI a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Stationär"@de;
skos:prefLabel "Inpatient"@en;
skos:notation "ADM:admission:I"^^xsd:string.
:AdmissionO a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Ambulant"@de;
skos:prefLabel "Outpatient"@en;
skos:notation "ADM:admission:O"^^xsd:string.
:AdmissionE a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Notaufnahme"@de;
skos:prefLabel "Emergency"@en;
skos:notation "ADM:admission:E"^^xsd:string.
\ No newline at end of file
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix nom: <http://sekmi.de/histream/nomenclature#> .
@prefix : <http://sekmi.de/histream/concepts#> .
nom: dc:title "HIStream concept ontology for testing".
:TestScheme a skos:ConceptScheme ;
skos:hasTopConcept :TestData .
:TestData a skos:Concept ;
skos:prefLabel "TestData_label_en"@en ;
skos:prefLabel "TestData_label_de"@de ;
skos:narrower :TestEnumConcept ;
skos:narrower :TestStringConcept ;
skos:narrower :TestIntegerConcept ;
skos:narrower :TestDecimalConcept ;
dc:description "Top concept for test data" .
:TestCS a rdfs:Datatype ;
nom:id "test_cs" ;
rdfs:comment "Test coding system" ;
nom:hasModifier :TestConstModifier ;
owl:onDatatype xsd:string .
:TestEnumConcept a skos:Concept;
skos:inScheme :TestData;
nom:valueType nom:enum;
nom:valueEnum [
nom:enumEntry [ nom:constValue "1"^^xsd:string; skos:prefLabel "1_de"@de; skos:prefLabel "1_en"@en ] ;
nom:enumEntry [ nom:constValue "2"^^xsd:string; skos:prefLabel "2_de"@de; skos:prefLabel "2_en"@en ] ;
] ;
skos:prefLabel "Enum_label_de"@de;
skos:prefLabel "Enum_label_en"@en;
skos:notation "Enum"^^:TestCS .
:TestIntegerConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:integer ;
skos:prefLabel "Integer_label_en"@en ;
skos:notation "Int"^^:TestCS .
:TestStringConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:string ;
skos:prefLabel "String_label_en"@en ;
skos:notation "String"^^:TestCS .
:TestDecimalConcept a skos:Concept;
skos:inScheme :TestData ;
nom:valueType xsd:decimal ;
skos:prefLabel "Decimal_label_en"@en ;
skos:notation "Decimal"^^:TestCS .
:TestConstModifier a :ConceptModifier ;
rdfs:comment "Modifier also a skos:Concept?" ;
skos:prefLabel "ConstModifier_label_en"@en;
skos:prefLabel "ConstModifier_label_de"@de;
skos:notation "Const"^^xsd:string ;
nom:constValue "C"^^xsd:string .
:admitdiag a :ConceptModifier ;
rdfs:comment "Modifier also a skos:Concept?" ;
skos:prefLabel "Admit diagnosis"@en;
skos:prefLabel "Aufnahmediagnose"@de;
skos:notation "Type"^^xsd:string ;
nom:constValue "AD"^^xsd:string .
# will result in queries: Type=AD
nom:icd10_2012 a rdfs:Datatype ;
nom:id "I10-2012" ;
rdfs:comment "Datentyp für ICD10-Katalog 2012" ;
owl:onDatatype xsd:string ;
nom:hasModifier :admitdiag ;
owl:withRestrictions (
[
xsd:pattern "[A-Z][0-9.]+"
]
) .
nom:icd10_2011 a rdfs:Datatype ;
nom:id "I10-2011" ;
rdfs:comment "Datentyp für ICD10-Katalog 2011" ;
owl:onDatatype xsd:string ;
owl:withRestrictions (
[
xsd:pattern "[A-Z][0-9.]+"
]
) .
nom:imdd a rdfs:Datatype ;
nom:id "IMDD" ;
rdfs:comment "Imeso Medical Data Dictionary" ;
owl:onDatatype xsd:string .
:Imeso a skos:ConceptScheme;
skos:hasTopConcept :ImesoData .
:ImesoData a skos:Concept;
skos:inScheme :Imeso;
skos:prefLabel "Imeso"@de;
skos:narrower :IMDD_Temp;
skos:narrower :IMDD_HF;
skos:narrower :IMDD_AF;
skos:narrower :Test_enum;
dc:description "Werte aus Imeso-Software".
:IMDD_Temp a skos:Concept;
skos:inScheme :Imeso;
skos:prefLabel "Temperatur"@de;
skos:prefLabel "Temperature"@en;
nom:valueType xsd:decimal;
skos:notation "MDD_Temp"^^nom:imdd .
:IMDD_HF a skos:Concept;
skos:inScheme :Imeso;
nom:valueType xsd:integer;
skos:prefLabel "Heart rate"@en;
skos:prefLabel "Herzfrequenz"@de;
skos:notation "MDD_HF"^^nom:imdd .
:IMDD_AF a skos:Concept;
skos:inScheme :Imeso;
nom:valueType xsd:integer;
skos:prefLabel "Respiratory rate"@de;
skos:prefLabel "Atemfrequenz"@de;
skos:notation "MDD_AF"^^nom:imdd .
:Test_enum2 a skos:Concept;
skos:inScheme :Imeso;
nom:valueType :enum;
nom:valueEnum [
nom:enumEntry [ nom:constValue "1"^^xsd:string; skos:prefLabel "Erstens"@de; skos:prefLabel "First"@en ];
nom:enumEntry [ nom:constValue "2"^^xsd:string; skos:prefLabel "Zweitens"@de; skos:prefLabel "Second"@en ];
] ;
skos:prefLabel "Test enum"@de;
skos:notation "MDD_Enum"^^nom:imdd .
:Diagnoses a skos:ConceptScheme;
skos:hasTopConcept :Icd10.
:Procedures a skos:ConceptScheme;
skos:hasTopConcept :Ops301.
:Icd10 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "Diagnosen (ICD-10)"@de;
skos:prefLabel "Diagnoses (ICD-10)"@en;
skos:narrower :Icd10a00b99;
dc:description "Diagnosen nach ICD-10".
:Icd10a00b99 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "A00-B99"@de;
skos:narrower :Icd10a00a09;
dc:description "Bestimmte infektiöse und parasitäre Krankheiten"@de.
:Icd10a00a09 a skos:Concept;
skos:inScheme :Diagnoses;
skos:prefLabel "Infektiöse Darmkrankheiten (A00-A09)"@de;
skos:narrower :Icd10_a00_9;
dc:description "Infektiöse Darmkrankheiten"@de.
:Icd10_a00_9 a skos:Concept;
skos:inScheme :Diagnoses;
skos:notation "A00.9"^^nom:icd10_2011;
skos:notation "A00.9"^^nom:icd10_2012;
skos:notation "I10-2011:A00.9"^^xsd:string;
skos:prefLabel "A00.9: Cholera, nicht näher bezeichnet"@de .
:Ops301 a skos:Concept;
skos:inScheme :Procedures;
skos:prefLabel "Prozeduren (OPS)"@de;
skos:prefLabel "Procedures (OPS/German ICPM)"@en;
dc:description "Prozeduren und Therapien nach OPS".
:Patient a skos:ConceptScheme;
skos:hasTopConcept :PatientConcept.
:PatientConcept a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Patient"@de;
skos:prefLabel "Patient"@en;
skos:narrower :MasterData;
skos:narrower :Timepoints.
:MasterData a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Stammdaten"@de;
skos:prefLabel "Master data"@en;
skos:narrower :Age;
skos:narrower :Sex.
:Age a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Alter"@de;
skos:prefLabel "Age"@en;
skos:notation "p:age"^^xsd:string.
:Sex a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Geschlecht"@de;
skos:prefLabel "Sex"@en;
skos:notation "p:sex"^^xsd:string.
:Timepoints a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Zeitpunkte"@de;
skos:prefLabel "Time points"@en;
skos:narrower :Admission;
skos:narrower :Discharge;
dc:description "Zeitpunkte xxx".
:Admission a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Aufnahme"@de;
skos:prefLabel "Admission"@en;
skos:narrower :AdmissionI;
skos:narrower :AdmissionO;
skos:narrower :AdmissionE.
:AdmissionI a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Stationär"@de;
skos:prefLabel "Inpatient"@en;
skos:notation "ADM:admission:I"^^xsd:string.
:AdmissionO a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Ambulant"@de;
skos:prefLabel "Outpatient"@en;
skos:notation "ADM:admission:O"^^xsd:string.
:AdmissionE a skos:Concept;
skos:inScheme :Patient;
skos:prefLabel "Notaufnahme"@de;
skos:prefLabel "Emergency"@en;
skos:notation "ADM:admission:E"^^xsd:string.
ontology.class = de.sekmi.histream.ontology.skos.Store
rdf.file.1 = ../histream-skos/src/main/examples/test-ontology.n3
rdf.file.1 = ../histream-skos/src/main/examples/test-ontology.ttl
......@@ -33,6 +33,8 @@ public interface Concept {
*
* SKOS allows multiple notations for a single concept,
* but there should be no two concepts sharing the same notation.
* <p>
* TODO i2b2 appears to support multiple notation via the M attribute (instead of L)
*
* @return String array containing all id's assigned to this concept
* @throws OntologyException for ontology errors
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment