from rdflib.query import Result, ResultParser from rdflib.plugins.sparql.parser import ( Var, STRING_LITERAL1, STRING_LITERAL2, IRIREF, BLANK_NODE_LABEL, NumericLiteral, BooleanLiteral, LANGTAG) from rdflib.plugins.sparql.parserutils import Comp, Param, CompValue from rdflib import Literal as RDFLiteral ParserElement.setDefaultWhitespaceChars(" \n") String = STRING_LITERAL1 | STRING_LITERAL2 RDFLITERAL = Comp('literal', Param('string', String) + Optional( Param('lang', LANGTAG.leaveWhitespace() ) | Literal('^^').leaveWhitespace( ) + Param('datatype', IRIREF).leaveWhitespace())) TERM = RDFLITERAL | IRIREF | BLANK_NODE_LABEL | NumericLiteral | BooleanLiteral ROW = TERM + ZeroOrMore(Suppress("\t") + TERM) ROW.parseWithTabs() HEADER = Var + ZeroOrMore(Suppress("\t") + Var) HEADER.parseWithTabs() class TSVResultParser(ResultParser): def parse(self, source): try:
BLANK_NODE_LABEL, NumericLiteral, BooleanLiteral, LANGTAG) from rdflib.plugins.sparql.parserutils import Comp, Param, CompValue from rdflib import Literal as RDFLiteral from rdflib.py3compat import bytestype ParserElement.setDefaultWhitespaceChars(" \n") String = STRING_LITERAL1 | STRING_LITERAL2 RDFLITERAL = Comp( 'literal', Param('string', String) + Optional( Param('lang', LANGTAG.leaveWhitespace()) | Literal('^^').leaveWhitespace() + Param('datatype', IRIREF).leaveWhitespace())) NONE_VALUE = object() EMPTY = FollowedBy(LineEnd()) | FollowedBy("\t") EMPTY.setParseAction(lambda x: NONE_VALUE) TERM = RDFLITERAL | IRIREF | BLANK_NODE_LABEL | NumericLiteral | BooleanLiteral ROW = (EMPTY | TERM) + ZeroOrMore(Suppress("\t") + (EMPTY | TERM)) ROW.parseWithTabs() HEADER = Var + ZeroOrMore(Suppress("\t") + Var) HEADER.parseWithTabs()
NumericLiteral, BooleanLiteral, LANGTAG, ) from rdflib.plugins.sparql.parserutils import Comp, Param, CompValue from rdflib import Literal as RDFLiteral ParserElement.setDefaultWhitespaceChars(" \n") String = STRING_LITERAL1 | STRING_LITERAL2 RDFLITERAL = Comp( "literal", Param("string", String) + Optional( Param("lang", LANGTAG.leaveWhitespace()) | Literal("^^").leaveWhitespace() + Param("datatype", IRIREF).leaveWhitespace()), ) NONE_VALUE = object() EMPTY = FollowedBy(LineEnd()) | FollowedBy("\t") EMPTY.setParseAction(lambda x: NONE_VALUE) TERM = RDFLITERAL | IRIREF | BLANK_NODE_LABEL | NumericLiteral | BooleanLiteral ROW = (EMPTY | TERM) + ZeroOrMore(Suppress("\t") + (EMPTY | TERM)) ROW.parseWithTabs() HEADER = Var + ZeroOrMore(Suppress("\t") + Var)