From 69ce2b45f299ee1d14b7bb991c6e5122122a7991 Mon Sep 17 00:00:00 2001 From: Jim Balhoff Date: Tue, 31 Jan 2023 14:11:29 -0500 Subject: [PATCH] =?UTF-8?q?Output=20lists=20in=20examples=20using=20RDF=20?= =?UTF-8?q?lists.=20Don=E2=80=99t=20output=20fhir:index.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fhir/r5/elementmodel/TurtleParser.java | 6 +-- .../org/hl7/fhir/utilities/turtle/Turtle.java | 44 +++++++++++++------ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/TurtleParser.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/TurtleParser.java index 08636a3ce..020aab814 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/TurtleParser.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/TurtleParser.java @@ -408,10 +408,10 @@ public class TurtleParser extends ParserBase { Complex t; if (element.getSpecial() == SpecialElement.BUNDLE_ENTRY && parent != null && parent.getNamedChildValue("fullUrl") != null) { String url = "<"+parent.getNamedChildValue("fullUrl")+">"; - ctxt.linkedPredicate("fhir:"+en, url, linkResolver == null ? null : linkResolver.resolveProperty(element.getProperty()), comment); + ctxt.linkedPredicate("fhir:"+en, url, linkResolver == null ? null : linkResolver.resolveProperty(element.getProperty()), comment, element.getProperty().isList()); t = section.subject(url); } else { - t = ctxt.linkedPredicate("fhir:"+en, linkResolver == null ? null : linkResolver.resolveProperty(element.getProperty()), comment); + t = ctxt.linkedPredicate("fhir:"+en, linkResolver == null ? null : linkResolver.resolveProperty(element.getProperty()), comment, element.getProperty().isList()); } if (element.getProperty().getName().endsWith("[x]") && !element.hasValue()) { t.linkedPredicate("a", "fhir:" + element.fhirType(), linkResolver == null ? null : linkResolver.resolveType(element.fhirType()), null); @@ -420,8 +420,6 @@ public class TurtleParser extends ParserBase { t.linkedPredicate("a", "fhir:"+element.fhirType(), linkResolver == null ? null : linkResolver.resolveType(element.fhirType()), null); if (element.hasValue()) t.linkedPredicate("fhir:v", ttlLiteral(element.getValue(), element.getType()), linkResolver == null ? null : linkResolver.resolveType(element.getType()), null); - if (element.getProperty().isList() && (!element.isResource() || element.getSpecial() == SpecialElement.CONTAINED)) - t.linkedPredicate("fhir:index", Integer.toString(element.getIndex()), linkResolver == null ? null : linkResolver.resolvePage("rdf.html#index"), null); if ("Coding".equals(element.getType())) decorateCoding(t, element, section); diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/turtle/Turtle.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/turtle/Turtle.java index 6b5ccef48..af5c0d08c 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/turtle/Turtle.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/turtle/Turtle.java @@ -81,10 +81,14 @@ public class Turtle { return predicate(predicate, new StringType(object), asList); } - public Complex linkedPredicate(String predicate, String object, String link, String comment) { + public Complex linkedPredicate(String predicate, String object, String link, String comment) { + return linkedPredicate(predicate, object, link, comment, false); + } + + public Complex linkedPredicate(String predicate, String object, String link, String comment, boolean asList) { predicateSet.add(predicate); objectSet.add(object); - return linkedPredicate(predicate, new StringType(object), link, comment); + return linkedPredicate(predicate, new StringType(object), link, comment, asList); } public Complex predicate(String predicate, Triple object) { @@ -112,14 +116,19 @@ public class Turtle { return p; return null; } - + public Complex linkedPredicate(String predicate, Triple object, String link, String comment) { + return linkedPredicate(predicate, object, link, comment, false); + } + + public Complex linkedPredicate(String predicate, Triple object, String link, String comment, boolean asList) { Predicate p = getPredicate(predicate); if (p == null) { p = new Predicate(); p.predicate = predicate; p.link = link; p.comment = comment; + p.asList = asList; predicateSet.add(predicate); predicates.add(p); } @@ -140,10 +149,14 @@ public class Turtle { return c; } - public Complex linkedPredicate(String predicate, String link, String comment) { + public Complex linkedPredicate(String predicate, String link, String comment) { + return linkedPredicate(predicate, link, comment, false); + } + + public Complex linkedPredicate(String predicate, String link, String comment, boolean asList) { predicateSet.add(predicate); Complex c = complex(); - linkedPredicate(predicate, c, link, comment); + linkedPredicate(predicate, c, link, comment, asList); return c; } @@ -478,10 +491,12 @@ public class Turtle { writer.write(" "); boolean first = true; for (Triple o : p.getObjects()) { - if (first) + if (first) { first = false; - else - writer.write(", "); + if (p.asList) writer.write("( "); + } else { + if (!p.asList) writer.write(", "); + } if (o instanceof StringType) writer.write(((StringType) o).value); else { @@ -493,6 +508,7 @@ public class Turtle { } } String comment = p.comment == null? "" : " # "+p.comment; + if (p.asList) writer.write(" )"); i++; if (i < sbj.predicates.size()) writer.write(";"+comment+"\r\n "); @@ -525,10 +541,11 @@ public class Turtle { b.append(" "); boolean first = true; for (Triple o : p.getObjects()) { - if (first) - first = false; - else - b.append(", "); + if (first) { + first = false; + if (p.asList) b.append("( "); + } else + if (!p.asList) b.append(", "); if (o instanceof StringType) b.append(Utilities.escapeXml(((StringType) o).value)); else { @@ -540,6 +557,7 @@ public class Turtle { } } String comment = p.comment == null? "" : " # "+p.comment; + if (p.asList) b.append(" )"); i++; if (i < sbj.predicates.size()) b.append(";"+Utilities.escapeXml(comment)+"\r\n "); @@ -579,8 +597,8 @@ public class Turtle { for (Triple o : po.getObjects()) { if (first) { first = false; - if (po.asList) writer.write("( "); writer.write(left+" "+po.getPredicate()+" "); + if (po.asList) writer.write("( "); } else { if (!po.asList) writer.write(", "); }