Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SOPRANO_INFERENCE_RULE_H_
00023 #define _SOPRANO_INFERENCE_RULE_H_
00024
00025 #include <QtCore/QSharedDataPointer>
00026 #include <QtCore/QList>
00027
00028 #include "statementpattern.h"
00029 #include "statement.h"
00030 #include "soprano_export.h"
00031
00032
00033 namespace Soprano {
00034
00035 class BindingSet;
00036
00037 namespace Inference {
00038
00049 class SOPRANO_EXPORT Rule
00050 {
00051 public:
00055 Rule();
00056
00060 Rule( const Rule& other );
00061
00065 ~Rule();
00066
00070 Rule& operator=( const Rule& other );
00071
00078 QList<StatementPattern> preconditions() const;
00079
00083 void addPrecondition( const StatementPattern& );
00084
00090 StatementPattern effect() const;
00091
00095 void setEffect( const StatementPattern& );
00096
00106 bool match( const Statement& statement ) const;
00107
00118 void bindToStatement( const Statement& statement );
00119
00124 Statement boundToStatement() const;
00125
00138 QString createSparqlQuery( bool bindVariables = false ) const;
00139
00150 Statement bindEffect( const BindingSet& bindings ) const;
00151
00163 QList<Statement> bindPreconditions( const BindingSet& bindings ) const;
00164
00173 bool isValid() const;
00174
00175 private:
00180 BindingSet mergeBindingStatement( const BindingSet& bindings ) const;
00181 Statement bindStatementPattern( const StatementPattern& pattern, const BindingSet& bindings ) const;
00182
00183 class Private;
00184 QSharedDataPointer<Private> d;
00185 };
00186 }
00187 }
00188
00189 SOPRANO_EXPORT QDebug operator<<( QDebug s, const Soprano::Inference::Rule& );
00190
00191 #endif