3#include <knowCore/NamedType.h>
4#include <knowCore/Value.h>
25 template<
typename _T_>
26 static Literal fromValue(
const _T_& _value,
const Lang& _lang =
Lang(QString()));
30 template<
typename _T_>
64 bool operator<(
const Literal& _rhs)
const;
65 bool operator==(
const Literal& _rhs)
const;
73 QSharedDataPointer<Private> d;
75 template<
typename _T_>
76 Literal Literal::fromValue(
const _T_& _value,
const Lang& _lang)
80 template<
typename _T_>
83 const auto [success,
value, message] = Value::fromValue(_datatype, _value, _conversion);
88 }
else if constexpr(std::is_same_v<QString, _T_> or std::is_same_v<QByteArray, _T_>) {
89 const auto [success_2, value_2, message_2] = Value::fromRdfLiteral(_datatype, _value);
92 KNOWCORE_ASSERT(value_2.datatype() == _datatype);
93 return kCrvSuccess(
Literal(value_2, _lang));
99 return kCrvError(message);
105 return fromVariant(_datatype, _value, _lang, _conversion);
107 uint qHash(
const Literal& key, uint seed = 0);
112 if(p.datatype() != p.Value::datatype())
114 if(p.lang().isEmpty())
116 return format_to(ctx.out(),
"{}({})", p.datatype(), (
const knowCore::Value&)p);
118 return format_to(ctx.out(),
"{}({})@{}", p.datatype(), (
const knowCore::Value&)p, p.lang());
120 }
else if(p.lang().isEmpty())
122 return forward<knowCore::Value>(p, ctx);
124 return format_to(ctx.out(),
"{}@{}", (
const knowCore::Value&)p, p.lang());
129#include <knowCore/MetaType.h>
130KNOWCORE_DECLARE_FULL_METATYPE(knowRDF, Literal)
132inline knowRDF::Lang operator "" _kRDFlang(
const char* _text, std::size_t _size)
137#if __cplusplus > 201703L
138inline knowRDF::Lang operator "" _kRDFlang(
const char8_t* _text, std::size_t _size)
140 return knowRDF::Lang(QString::fromUtf8((
const char*)_text, _size));
Definition MetaType.h:114
Definition NamedType.h:40
Definition ReturnValue.h:29
Definition MetaType.h:145
static Value fromValue(const _T_ &_value)
Definition Value.h:184
ReturnValue< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:229
static knowCore::ReturnValue< Literal > fromRdfLiteral(const knowCore::Uri &_datatype, const QString &_value, const QString &_lang=QString())
Definition Literal.cpp:127
QString lang() const
Definition Literal.cpp:138
static knowCore::ReturnValue< Literal > fromVariant(const knowCore::Uri &_datatype, const QVariant &_value, const QString &_lang=QString(), knowCore::TypeCheckingMode _conversion=knowCore::TypeCheckingMode::Safe)
Definition Literal.cpp:97
knowCore::Uri datatype() const
Definition Literal.cpp:56
Literal()
Definition Literal.cpp:22