//
//     Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

namespace Soprano
{

class Node
{
%TypeHeaderCode
#include <soprano/node.h>
%End


public:
    enum Type
    {
        EmptyNode,
        ResourceNode,
        LiteralNode,
        BlankNode
    };

                            Node ();
                            Node (const QUrl& uri);
    explicit                Node (const QString& id);
                            Node (const Soprano::LiteralValue& value);
                            Node (const Soprano::LiteralValue& value, const QString& language);

                            Node (const Soprano::Node& other);
    bool                    operator == (const Soprano::Node& other) const;
    bool                    operator != (const Soprano::Node& other) const;
    bool                    operator == (const QUrl& uri) const;
    bool                    operator == (const Soprano::LiteralValue& other) const;
    bool                    matches (const Soprano::Node& other) const;
    Soprano::Node::Type     type () const;
    bool                    isEmpty () const;
    bool                    isValid () const;
    bool                    isLiteral () const;
    bool                    isResource () const;
    bool                    isBlank () const;
    QUrl                    uri () const;
    QString                 identifier () const;
    Soprano::LiteralValue   literal () const;
    QUrl                    dataType () const;
    QString                 language () const;
    QString                 toString () const;
    QString                 toN3 () const;
    static Soprano::Node    createEmptyNode ();
    static Soprano::Node    createResourceNode (const QUrl& uri);
    static Soprano::Node    createBlankNode (const QString& id);
    static Soprano::Node    createLiteralNode (const Soprano::LiteralValue& value);
    static Soprano::Node    createLiteralNode (const Soprano::LiteralValue& value, const QString& language);
    static QString          resourceToN3 (const QUrl& resource);
    static QString          blankToN3 (const QString& blank);
    static QString          literalToN3 (const Soprano::LiteralValue& literal);
    ~Node ();
    enum N3ParserFlag
    {
        NoFlags,
        StrictLiteralTypes,
        StrictUris,
        IgnorePrefixes
    };
    typedef QFlags<Soprano::Node::N3ParserFlag> N3ParserFlags;
    static Soprano::Node    fromN3 (const QString& n3, Soprano::Node::N3ParserFlags flags = Soprano::Node::NoFlags);
    static Soprano::Node    fromN3Stream (QTextStream& stream, Soprano::Node::N3ParserFlags flags = Soprano::Node::NoFlags);
};
// Node

uint                    qHash (const Soprano::Node& node);
};
// Soprano


//ig QDebug                  operator << (QDebug s, const Soprano::Node&);
QTextStream&            operator << (QTextStream& s, const Soprano::Node&);
QTextStream&            operator >> (QTextStream& s, Soprano::Node&);
