X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FOntologyGenerator.java;fp=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FOntologyGenerator.java;h=aea2ff050d7fa2dceb39e8a84615b3eefe23d8d5;hb=fc60d91049c46ee5b6107da4d4c54eada4a9f21c;hp=74bafb99758af243ac12f8f0997ad0c5559ca6f8;hpb=ab4fc05981803ce2c430f93f34b8b6a8f85a53ce;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java index 74bafb9..aea2ff0 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java @@ -3,6 +3,9 @@ package org.simantics.xml.sax; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -86,6 +89,23 @@ public class OntologyGenerator implements SchemaConversionComponent { writer.println(); writer.println(); + Set children = new HashSet<>(); + Deque stack = new ArrayDeque<>(); + stack.addAll(converter.getSubConverters()); + while (!stack.isEmpty()) { + SchemaConverter sc = stack.pop(); + if (children.contains(sc)) + continue; + children.add(sc); + stack.addAll(sc.getSubConverters()); + } + children.remove(converter); + for (SchemaConverter sc : children) { + writer.println(sc.shortName + " = <" + sc.ontologyUri +">"); + } + + writer.println(); + ontRoot += "."; writer.println(ontRoot+"SimpleTypes : L0.Library"); writer.println(ontRoot+"ComplexTypes : L0.Library"); @@ -93,6 +113,8 @@ public class OntologyGenerator implements SchemaConversionComponent { writer.println(); writer.println(commentTag + " Interpreted from schema"); writer.println(); + + base.handle(this); } @@ -162,7 +184,7 @@ public class OntologyGenerator implements SchemaConversionComponent { } else { referenceType = element.getElement().getRef(); if (refName == null) - refName = referenceType.getLocalPart(); + refName = base.getName(referenceType); } String type = base.getL0TypeFromPrimitiveType(referenceType); SchemaObject obj = null; @@ -219,7 +241,7 @@ public class OntologyGenerator implements SchemaConversionComponent { @Override public void handle(SchemaObject parent, Attribute attribute) { - String name = attribute.getName(); + String name = base.getName(attribute); QName primitiveType = attribute.getType(); LocalSimpleType simpleType = attribute.getSimpleType(); QName ref = attribute.getRef(); @@ -233,8 +255,8 @@ public class OntologyGenerator implements SchemaConversionComponent { relationType = "XML.hasAttribute"; } else if (ref != null && parent != null) { - relationName = getName(parent)+".has"+ref.getLocalPart(); - relationType = ontRoot+"has"+ref.getLocalPart(); + relationName = getName(parent)+".has"+base.getName(ref); + relationType = converter.getShortName(ref.getNamespaceURI())+".has"+base.getName(ref); } else { throw new RuntimeException(); } @@ -292,7 +314,7 @@ public class OntologyGenerator implements SchemaConversionComponent { if (parent == null) { NamedAttributeGroup group = (NamedAttributeGroup)attributeGroup; writer.println(ontRoot+getAttributeGroupPrefix()+group.getName()+ "