class PN_CHARS(JSGString): pattern = JSGPattern( r'{PN_CHARS_U} | [\-0-9\u00B7\u0300-\u036F\u203F-\u2040]'.format( PN_CHARS_U=PN_CHARS_U.pattern))
class PN_PREFIX(JSGString): pattern = JSGPattern( r'{PN_CHARS_BASE}(({PN_CHARS}|\.)*{PN_CHARS})?'.format( PN_CHARS_BASE=PN_CHARS_BASE.pattern, PN_CHARS=PN_CHARS.pattern))
class PN_CHARS_BASE(JSGString): pattern = JSGPattern( r'[A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D' r'\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u10000-\uEFFFF]' )
class PN_CHARS_U(JSGString): pattern = JSGPattern( r'{PN_CHARS_BASE}|_'.format(PN_CHARS_BASE=PN_CHARS_BASE.pattern))
class INTEGER(JSGString): pattern = JSGPattern(r'[+-]?[0-9]+')
class SIMPLE_LITERAL(JSGString): pattern = JSGPattern(r'"([^"\r\n]|\\")*"')
class LANGTAG(JSGString): pattern = JSGPattern(r'@[a-zA-Z]+(-[a-zA-Z0-9]+)*')
class BNODE(JSGString): pattern = JSGPattern( r'_:({PN_CHARS_U}|[0-9])(({PN_CHARS}|\.)*{PN_CHARS})?'.format( PN_CHARS=PN_CHARS.pattern, PN_CHARS_U=PN_CHARS_U.pattern))
class STAR(JSGString): pattern = JSGPattern(r'\*')
class NodeType(JSGString): pattern = JSGPattern(r'iri|bnode|nonliteral|literal')
class STRING(JSGString): pattern = JSGPattern(r'.*')
class LANG_LITERAL(JSGString): pattern = JSGPattern(r'{SIMPLE_LITERAL}{LANGTAG}'.format( SIMPLE_LITERAL=SIMPLE_LITERAL.pattern, LANGTAG=LANGTAG.pattern))
class DATATYPE_LITERAL(JSGString): pattern = JSGPattern(r'{SIMPLE_LITERAL}^^{IRI}'.format( SIMPLE_LITERAL=SIMPLE_LITERAL.pattern, IRI=IRI.pattern))
class PREFIX(JSGString): pattern = JSGPattern(r'({PN_PREFIX})?'.format(PN_PREFIX=PN_PREFIX.pattern))
class EXPONENT(JSGString): pattern = JSGPattern(r'[eE][+=]?[0-9]+')
class IRI(JSGString): pattern = JSGPattern(r'({PN_CHARS}|[.:/\\#@%&]|{UCHAR})*'.format( PN_CHARS=PN_CHARS.pattern, UCHAR=UCHAR.pattern))
class HEX(JSGString): pattern = JSGPattern(r'[0-9A-Fa-f]')
class BOOL(JSGString): pattern = JSGPattern(r'true|false')
class UCHAR(JSGString): pattern = JSGPattern( r'\\u{HEX}{HEX}{HEX}{HEX}|\\U{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}{HEX}'. format(HEX=HEX.pattern))
class DECIMAL(JSGString): pattern = JSGPattern(r'[+-]?[0-9]*\.[0-9]+')
class DOUBLE(JSGString): pattern = JSGPattern( r'[+-]?([0-9]+\.[0-9]*{EXPONENT}|\.[0-9]+{EXPONENT})'.format( EXPONENT=EXPONENT.pattern))