private void gen(ResourceDefn rd) throws Exception { Section section = section(rd.getName()); ElementDefn t = rd.getRoot(); if (t.getTypes().isEmpty()) section.triple("fhir:" + t.getName(), "a", "rdfs:Class"); else section.triple("fhir:" + t.getName(), "rdfs:subClassOf", processType(t.typeCode())); section.comment("fhir:" + t.getName(), rd.getDefinition()); if (!Utilities.noString(t.getW5())) section.triple( "fhir:" + t.getName(), "fhir:w5", complex().predicate("a", "fhir:w5\\#" + t.getW5())); processMappings(section, "fhir:" + rd.getName(), rd.getRoot()); for (ElementDefn e : t.getElements()) { if (e.getName().endsWith("[x]")) { String cn = e.getName().substring(0, e.getName().length() - 3); section.triple("fhir:" + t.getName() + "." + cn, "a", "rdf:Property"); section.comment("fhir:" + t.getName() + "." + cn, e.getDefinition()); processMappings(section, "fhir:" + t.getName() + "." + cn, e); for (TypeRef tr : e.typeCode().equals("*") ? getAnyTypes() : e.getTypes()) { String en = cn + Utilities.capitalize(tr.getName()); section.triple( "fhir:" + t.getName() + "." + en, "rdfs:subPropertyOf", "fhir:" + t.getName() + "." + cn); section.triple("fhir:" + t.getName() + "." + en, "rdfs:domain", "fhir:" + rd.getName()); genRange(section, t.getName(), en, e, tr, false); } } else { section.triple("fhir:" + t.getName() + "." + e.getName(), "a", "rdf:Property"); section.comment("fhir:" + t.getName() + "." + e.getName(), e.getDefinition()); section.triple( "fhir:" + t.getName() + "." + e.getName(), "rdfs:domain", "fhir:" + rd.getName()); processMappings(section, "fhir:" + t.getName() + "." + e.getName(), e); genRange( section, t.getName(), e.getName(), e, e.getTypes().isEmpty() ? null : e.getTypes().get(0), false); } } processAnonTypes(); }