
org.swrlapi.drools.converters.drl.DroolsSWRLBuiltInArgument2DRLConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swrlapi-drools-engine Show documentation
Show all versions of swrlapi-drools-engine Show documentation
Drools implementation of SWRLAPI-based SWRL rule engine
package org.swrlapi.drools.converters.drl;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataPropertyExpression;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
import org.swrlapi.bridge.SWRLRuleEngineBridge;
import org.swrlapi.bridge.converters.TargetRuleEngineSWRLBuiltInArgumentConverter;
import org.swrlapi.builtins.arguments.SQWRLCollectionVariableBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLAnnotationPropertyBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLBuiltInArgumentVisitorEx;
import org.swrlapi.builtins.arguments.SWRLClassBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLClassExpressionBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLDataPropertyBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLDataPropertyExpressionBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLDatatypeBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLLiteralBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLMultiValueVariableBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLNamedIndividualBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLObjectPropertyBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLObjectPropertyExpressionBuiltInArgument;
import org.swrlapi.builtins.arguments.SWRLVariableBuiltInArgument;
import org.swrlapi.drools.converters.oo.DroolsOWLClassExpressionHandler;
import org.swrlapi.drools.converters.oo.DroolsOWLPropertyExpressionHandler;
import org.swrlapi.drools.core.DroolsNames;
import org.swrlapi.exceptions.TargetSWRLRuleEngineNotImplementedFeatureException;
/**
* This class converts SWRLAPI SWRL built-in arguments to DRL clauses for use in rules.
*
* @see org.swrlapi.builtins.arguments.SWRLBuiltInArgument
*/
public class DroolsSWRLBuiltInArgument2DRLConverter extends DroolsDRLConverterBase
implements TargetRuleEngineSWRLBuiltInArgumentConverter, SWRLBuiltInArgumentVisitorEx
{
@NonNull private final DroolsOWLClassExpressionHandler droolsOWLClassExpressionHandler;
@NonNull private final DroolsOWLPropertyExpressionHandler droolsOWLPropertyExpressionHandler;
public DroolsSWRLBuiltInArgument2DRLConverter(@NonNull SWRLRuleEngineBridge bridge,
@NonNull DroolsOWLClassExpressionHandler droolsOWLClassExpressionHandler,
@NonNull DroolsOWLPropertyExpressionHandler droolsOWLPropertyExpressionHandler)
{
super(bridge);
this.droolsOWLClassExpressionHandler = droolsOWLClassExpressionHandler;
this.droolsOWLPropertyExpressionHandler = droolsOWLPropertyExpressionHandler;
}
@NonNull public String convert(@NonNull SWRLBuiltInArgument argument)
{
return argument.accept(this);
}
@NonNull @Override public String convert(@NonNull SWRLVariableBuiltInArgument argument)
{
if (argument.isUnbound())
return "new " + DroolsNames.UNBOUND_ARGUMENT_CLASS_NAME + "(" + addQuotes(
getDroolsSWRLVariable2NameConverter().swrlVariable2VariableName(argument)) + ")";
else
return getDroolsSWRLVariable2NameConverter().swrlVariable2DRL(argument);
}
@NonNull @Override public String convert(@NonNull SWRLClassBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.CLASS_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLClassExpressionBuiltInArgument argument)
{
OWLClassExpression classExpression = argument.getOWLClassExpression();
String ceid = getDroolsOWLClassExpressionHandler().convert(classExpression).getceid();
return "new " + DroolsNames.CLASS_EXPRESSION_CLASS_NAME + "(" + addQuotes(ceid) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLNamedIndividualBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.INDIVIDUAL_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLObjectPropertyExpressionBuiltInArgument argument)
{
OWLObjectPropertyExpression propertyExpression = argument.getOWLObjectPropertyExpression();
String peid = getDroolsOWLPropertyExpressionHandler().convert(propertyExpression).getid();
return "new " + DroolsNames.OBJECT_PROPERTY_EXPRESSION_CLASS_NAME + "(" + addQuotes(peid) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLObjectPropertyBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.OBJECT_PROPERTY_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLDataPropertyBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.DATA_PROPERTY_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLDataPropertyExpressionBuiltInArgument argument)
{
OWLDataPropertyExpression propertyExpression = argument.getOWLDataPropertyExpression();
String peid = getDroolsOWLPropertyExpressionHandler().convert(propertyExpression).getid();
return "new " + DroolsNames.DATA_PROPERTY_EXPRESSION_CLASS_NAME + "(" + addQuotes(peid) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLAnnotationPropertyBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.ANNOTATION_PROPERTY_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLDatatypeBuiltInArgument argument)
{
String prefixedName = iri2PrefixedName(argument.getIRI());
return "new " + DroolsNames.DATATYPE_CLASS_NAME + "(" + addQuotes(prefixedName) + ")";
}
@NonNull @Override public String convert(@NonNull SWRLLiteralBuiltInArgument argument)
{
return getDroolsOWLLiteral2DRLConverter().convert(argument.getLiteral());
}
@NonNull @Override public String convert(@NonNull SQWRLCollectionVariableBuiltInArgument argument)
{ // TODO This is not true!
throw new TargetSWRLRuleEngineNotImplementedFeatureException(
"SQWRL collection built-in arguments not yet implemented");
}
@NonNull private String addQuotes(@NonNull String s)
{
return "\"" + s + "\"";
}
@NonNull @Override public String visit(@NonNull SWRLClassBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(SWRLClassExpressionBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLNamedIndividualBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLObjectPropertyBuiltInArgument argument)
{
return convert(argument);
}
@Override public String visit(SWRLObjectPropertyExpressionBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLDataPropertyBuiltInArgument argument)
{
return convert(argument);
}
@Override public String visit(SWRLDataPropertyExpressionBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLAnnotationPropertyBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLDatatypeBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLLiteralBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLVariableBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(@NonNull SWRLMultiValueVariableBuiltInArgument argument)
{
return convert(argument);
}
@NonNull @Override public String visit(SQWRLCollectionVariableBuiltInArgument argument)
{
return convert(argument);
}
@NonNull private DroolsOWLClassExpressionHandler getDroolsOWLClassExpressionHandler()
{
return this.droolsOWLClassExpressionHandler;
}
@NonNull private DroolsOWLPropertyExpressionHandler getDroolsOWLPropertyExpressionHandler()
{
return this.droolsOWLPropertyExpressionHandler;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy