Output lists in examples using RDF lists. Don’t output fhir:index.

This commit is contained in:
Jim Balhoff 2023-01-31 14:11:29 -05:00
parent 890971d110
commit 69ce2b45f2
2 changed files with 33 additions and 17 deletions

View File

@ -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);

View File

@ -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(", ");
}