package org.apache.jena.reasoner.rulesys; import org.apache.jena.reasoner.rulesys.builtins.*; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public abstract class BuiltinRegistry { /** The default base registry */ public static BuiltinRegistry theRegistry; static { theRegistry=new MapBuiltinRegistry(); theRegistry.register(new Print()); theRegistry.register(new AddOne()); theRegistry.register(new LessThan()); theRegistry.register(new GreaterThan()); theRegistry.register(new LE()); theRegistry.register(new GE()); theRegistry.register(new Equal()); theRegistry.register(new NotFunctor()); theRegistry.register(new IsFunctor()); theRegistry.register(new NotEqual()); theRegistry.register(new MakeTemp()); theRegistry.register(new NoValue()); theRegistry.register(new Remove()); theRegistry.register(new Drop()); theRegistry.register(new Sum()); theRegistry.register(new Difference()); theRegistry.register(new Product()); theRegistry.register(new Quotient()); theRegistry.register(new Bound()); theRegistry.register(new Unbound()); theRegistry.register(new IsLiteral()); theRegistry.register(new NotLiteral()); theRegistry.register(new IsBNode()); theRegistry.register(new NotBNode()); theRegistry.register(new IsDType()); theRegistry.register(new NotDType()); theRegistry.register(new CountLiteralValues()); theRegistry.register(new Max()); theRegistry.register(new Min()); theRegistry.register(new ListLength()); theRegistry.register(new ListEntry()); theRegistry.register(new ListEqual()); theRegistry.register(new ListNotEqual()); theRegistry.register(new ListContains()); theRegistry.register(new ListNotContains()); theRegistry.register(new ListMapAsSubject()); theRegistry.register(new ListMapAsObject()); theRegistry.register(new MakeInstance()); theRegistry.register(new Table()); theRegistry.register(new TableAll()); theRegistry.register(new MakeSkolem()); theRegistry.register(new Hide()); theRegistry.register(new StrConcat()); theRegistry.register(new UriConcat()); theRegistry.register(new Regex()); theRegistry.register(new Now()); // Special purposes support functions for OWL theRegistry.register(new AssertDisjointPairs()); } /** * Register an implementation for a given builtin using its default name. * @param impl the implementation of the builtin */ public abstract void register(Builtin impl); /** * Register an implementation for a given builtin functor. * @param functor the name of the functor used to invoke the builtin * @param impl the implementation of the builtin */ public abstract void register(String functor, Builtin impl); /** * Find the implementation of the given builtin functor. * @param functor the name of the functor being invoked. * @return a Builtin or null if there is none registered under that name */ public abstract Builtin getImplementation(String functor); /** * Find the implementation of the given builtin functor. * @param uri the URI of the builtin to be retrieved * @return a Builtin or null if there is none registered under that name */ public abstract Builtin getImplementationByURI(String uri); }