diff --git a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena-wrapper-for-sadl/src/main/java/com/ge/research/sadl/jena/translator/JenaTranslatorPlugin.java b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena-wrapper-for-sadl/src/main/java/com/ge/research/sadl/jena/translator/JenaTranslatorPlugin.java index b1f1dd923..7ace2f580 100644 --- a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena-wrapper-for-sadl/src/main/java/com/ge/research/sadl/jena/translator/JenaTranslatorPlugin.java +++ b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena-wrapper-for-sadl/src/main/java/com/ge/research/sadl/jena/translator/JenaTranslatorPlugin.java @@ -1272,7 +1272,7 @@ else if (ftype.equals(BuiltinType.Assign)) { Builtin bltin = BuiltinRegistry.theRegistry.getImplementation(builtinName); if (bltin == null) { logger.error("Something went wrong finding/loading Builtin '" + builtinName + "'"); - addError("Unable to resolve built-in '" + builtinName + "'"); + addError("Unable to resolve built-in '" + builtinName + "' in rule '" + getRuleInTranslation().getRuleName() + "'"); } else { String uri = bltin.getURI(); @@ -1466,11 +1466,14 @@ else if (ITranslator.isKnownNode(node)) { return "?" + getNewVariableForRule(); } else if (node == null) { - throw new TranslationException("Encountered null node in nodeToString; this indicates incorrect intermediate form and should not happen"); +// throw new TranslationException("Encountered null node in nodeToString; this indicates incorrect intermediate form and should not happen"); + addError(new ModelError("Encountered null node in nodeToString; this indicates incorrect intermediate form and should not happen", ErrorType.ERROR)); } else { - throw new TranslationException("Nnode '" + node.toString() + "' cannot be translated to Jena format."); +// throw new TranslationException("Nnode '" + node.toString() + "' cannot be translated to Jena format."); + addError(new ModelError("Nnode '" + node.toString() + "' cannot be translated to Jena format.", ErrorType.ERROR)); } + return ""; } private Literal constantToLiteral(ConstantNode node) throws TranslationException { diff --git a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena/src/com/ge/research/sadl/jena/JenaBasedSadlModelProcessor.java b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena/src/com/ge/research/sadl/jena/JenaBasedSadlModelProcessor.java index 0bb8fcad6..52bdfe29a 100644 --- a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena/src/com/ge/research/sadl/jena/JenaBasedSadlModelProcessor.java +++ b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.jena/src/com/ge/research/sadl/jena/JenaBasedSadlModelProcessor.java @@ -7664,6 +7664,17 @@ public Object processExpression(PropOfSubject expr) boolean specialCntIdxProcessing = false; boolean lIsConstantExpression = false; + boolean predicateIsNegatedType = false; + if (predicate instanceof UnaryExpression && + ((UnaryExpression)predicate).getOp().contentEquals("not") && + ((UnaryExpression)predicate).getExpr() instanceof Constant && + ((Constant)((UnaryExpression)predicate).getExpr()).getConstant().equals("a type")) { + // negated + predicateIsNegatedType = true; + predicate = ((UnaryExpression)predicate).getExpr(); + } + + if (predicate instanceof Constant) { // this is a pseudo PropOfSubject; the predicate is a constant lIsConstantExpression = true; @@ -7733,7 +7744,11 @@ public Object processExpression(PropOfSubject expr) trPred = new NamedNode(RDFS.subClassOf.getURI()); // new RDFTypeNode(); ((NamedNode)trPred).setContext(predicate); ((NamedNode)trPred).setNodeType(NodeType.ObjectProperty); - return new TripleElement((Node)null, (Node)trPred, (Node)trSubj); + TripleElement tr = new TripleElement((Node)null, (Node)trPred, (Node)trSubj); + if (predicateIsNegatedType) { + tr.setType(TripleModifierType.Not); + } + return tr; } else if (cnstval.equals("value") && getTarget() instanceof Query) { // this is to be a delayed evaluation: don't use the expression as the query but evaluate // the expression at runtime and use the value as the query diff --git a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi-prolog-plugin/src/main/java/com/ge/research/sadl/swi_prolog_plugin/Activator.java b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi-prolog-plugin/src/main/java/com/ge/research/sadl/swi_prolog_plugin/Activator.java deleted file mode 100644 index fbb7cff79..000000000 --- a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi-prolog-plugin/src/main/java/com/ge/research/sadl/swi_prolog_plugin/Activator.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ge.research.sadl.swi_prolog_plugin; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -public class Activator implements BundleActivator { - - private static BundleContext context; - - static BundleContext getContext() { - return context; - } - - /* - * (non-Javadoc) - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bundleContext) throws Exception { - Activator.context = bundleContext; - } - - /* - * (non-Javadoc) - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bundleContext) throws Exception { - Activator.context = null; - } - -} diff --git a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi_prolog.feature/feature.xml b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi_prolog.feature/feature.xml index fb0bbac87..f2ed0b294 100644 --- a/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi_prolog.feature/feature.xml +++ b/sadl3/com.ge.research.sadl.parent/com.ge.research.sadl.swi_prolog.feature/feature.xml @@ -6,7 +6,8 @@ provider-name="GE Global Research"> - The SADL Prlog Plug-in is a Prolog-based reasoner for the Semantic Application Design Language (SADL), which is a controlled + The SADL Prolog Plug-in is a Prolog-based reasoner for the Semantic +Application Design Language (SADL), which is a controlled English grammar and Eclipse IDE for building, testing, and deploying semantic models.