A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/RDFLib/rdflib/commit/af17916 below:

`ROUND`, `ENCODE_FOR_URI` and `SECONDS` SPARQL functions (#2314) · RDFLib/rdflib@af17916 · GitHub

1 +

import logging

2 +

from decimal import Decimal

3 + 4 +

import pytest

5 + 6 +

from rdflib.graph import Graph

7 +

from rdflib.namespace import XSD, Namespace

8 +

from rdflib.plugins.sparql.operators import _lang_range_check

9 +

from rdflib.term import BNode, Identifier, Literal, URIRef

10 + 11 +

EG = Namespace("https://example.com/")

12 + 13 + 14 +

@pytest.mark.parametrize(

15 +

["expression", "expected_result"],

16 +

[

17 +

(r"isIRI('eg:IRI')", Literal(False)),

18 +

(r"isIRI(eg:IRI)", Literal(True)),

19 +

(r"isURI('eg:IRI')", Literal(False)),

20 +

(r"isURI(eg:IRI)", Literal(True)),

21 +

(r"isBLANK(eg:IRI)", Literal(False)),

22 +

(r"isBLANK(BNODE())", Literal(True)),

23 +

(r"isLITERAL(eg:IRI)", Literal(False)),

24 +

(r"isLITERAL('eg:IRI')", Literal(True)),

25 +

(r"isNumeric(eg:IRI)", Literal(False)),

26 +

(r"isNumeric(1)", Literal(True)),

27 +

(r"STR(eg:IRI)", Literal("https://example.com/IRI")),

28 +

(r"STR(1)", Literal("1")),

29 +

(r'LANG("Robert"@en)', Literal("en")),

30 +

(r'LANG("Robert")', Literal("")),

31 +

(r'DATATYPE("Robert")', XSD.string),

32 +

(r'DATATYPE("42"^^xsd:integer)', XSD.integer),

33 +

(r'IRI("http://example/")', URIRef("http://example/")),

34 +

(r'BNODE("example")', BNode),

35 +

(r'STRDT("123", xsd:integer)', Literal("123", datatype=XSD.integer)),

36 +

(r'STRLANG("cats and dogs", "en")', Literal("cats and dogs", lang="en")),

37 +

(r"UUID()", URIRef),

38 +

(r"STRUUID()", Literal),

39 +

(r'STRLEN("chat")', Literal(4)),

40 +

(r'SUBSTR("foobar", 4)', Literal("bar")),

41 +

(r'UCASE("foo")', Literal("FOO")),

42 +

(r'LCASE("BAR")', Literal("bar")),

43 +

(r'strStarts("foobar", "foo")', Literal(True)),

44 +

(r'strStarts("foobar", "bar")', Literal(False)),

45 +

(r'strEnds("foobar", "bar")', Literal(True)),

46 +

(r'strEnds("foobar", "foo")', Literal(False)),

47 +

(r'contains("foobar", "bar")', Literal(True)),

48 +

(r'contains("foobar", "barfoo")', Literal(False)),

49 +

(r'strbefore("abc","b")', Literal("a")),

50 +

(r'strbefore("abc","xyz")', Literal("")),

51 +

(r'strafter("abc","b")', Literal("c")),

52 +

(r'strafter("abc","xyz")', Literal("")),

53 +

(r"ENCODE_FOR_URI('this/is/a/test')", Literal("this%2Fis%2Fa%2Ftest")),

54 +

(r"ENCODE_FOR_URI('this is a test')", Literal("this%20is%20a%20test")),

55 +

(

56 +

r"ENCODE_FOR_URI('AAA~~0123456789~~---~~___~~...~~ZZZ')",

57 +

Literal("AAA~~0123456789~~---~~___~~...~~ZZZ"),

58 +

),

59 +

(r'CONCAT("foo", "bar")', Literal("foobar")),

60 +

(r'langMatches(lang("That Seventies Show"@en), "en")', Literal(True)),

61 +

(

62 +

r'langMatches(lang("Cette Série des Années Soixante-dix"@fr), "en")',

63 +

Literal(False),

64 +

),

65 +

(

66 +

r'langMatches(lang("Cette Série des Années Septante"@fr-BE), "en")',

67 +

Literal(False),

68 +

),

69 +

(r'langMatches(lang("Il Buono, il Bruto, il Cattivo"), "en")', Literal(False)),

70 +

(r'langMatches(lang("That Seventies Show"@en), "FR")', Literal(False)),

71 +

(

72 +

r'langMatches(lang("Cette Série des Années Soixante-dix"@fr), "FR")',

73 +

Literal(True),

74 +

),

75 +

(

76 +

r'langMatches(lang("Cette Série des Années Septante"@fr-BE), "FR")',

77 +

Literal(True),

78 +

),

79 +

(r'langMatches(lang("Il Buono, il Bruto, il Cattivo"), "FR")', Literal(False)),

80 +

(r'langMatches(lang("That Seventies Show"@en), "*")', Literal(True)),

81 +

(

82 +

r'langMatches(lang("Cette Série des Années Soixante-dix"@fr), "*")',

83 +

Literal(True),

84 +

),

85 +

(

86 +

r'langMatches(lang("Cette Série des Années Septante"@fr-BE), "*")',

87 +

Literal(True),

88 +

),

89 +

(r'langMatches(lang("Il Buono, il Bruto, il Cattivo"), "*")', Literal(False)),

90 +

(r'langMatches(lang("abc"@en-gb), "en-GB")', Literal(True)),

91 +

(r'regex("Alice", "^ali", "i")', Literal(True)),

92 +

(r'regex("Bob", "^ali", "i")', Literal(False)),

93 +

(r'replace("abcd", "b", "Z")', Literal("aZcd")),

94 +

(r"abs(-1.5)", Literal("1.5", datatype=XSD.decimal)),

95 +

(r"round(2.4999)", Literal("2", datatype=XSD.decimal)),

96 +

(r"round(2.5)", Literal("3", datatype=XSD.decimal)),

97 +

(r"round(-2.5)", Literal("-2", datatype=XSD.decimal)),

98 +

(r"round(0.1)", Literal("0", datatype=XSD.decimal)),

99 +

(r"round(-0.1)", Literal("0", datatype=XSD.decimal)),

100 +

(r"RAND()", Literal),

101 +

(r"now()", Literal),

102 +

(r'month("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)', Literal(1)),

103 +

(r'day("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)', Literal(10)),

104 +

(r'hours("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)', Literal(14)),

105 +

(r'minutes("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)', Literal(45)),

106 +

(

107 +

r'seconds("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)',

108 +

Literal(Decimal("13.815")),

109 +

),

110 +

(

111 +

r'timezone("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime)',

112 +

Literal("-PT5H", datatype=XSD.dayTimeDuration),

113 +

),

114 +

(

115 +

r'timezone("2011-01-10T14:45:13.815Z"^^xsd:dateTime)',

116 +

Literal("PT0S", datatype=XSD.dayTimeDuration),

117 +

),

118 +

(

119 +

r'tz("2011-01-10T14:45:13.815-05:00"^^xsd:dateTime) ',

120 +

Literal("-05:00"),

121 +

),

122 +

(

123 +

r'tz("2011-01-10T14:45:13.815Z"^^xsd:dateTime) ',

124 +

Literal("Z"),

125 +

),

126 +

(

127 +

r'tz("2011-01-10T14:45:13.815"^^xsd:dateTime) ',

128 +

Literal(""),

129 +

),

130 +

(r'MD5("abc")', Literal("900150983cd24fb0d6963f7d28e17f72")),

131 +

(r'SHA1("abc")', Literal("a9993e364706816aba3e25717850c26c9cd0d89d")),

132 +

(

133 +

r'SHA256("abc")',

134 +

Literal("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"),

135 +

),

136 +

(

137 +

r'SHA384("abc")',

138 +

Literal(

139 +

"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7"

140 +

),

141 +

),

142 +

(

143 +

r'SHA512("abc")',

144 +

Literal(

145 +

"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"

146 +

),

147 +

),

148 +

],

149 +

)

150 +

def test_function(expression: str, expected_result: Identifier) -> None:

151 +

graph = Graph()

152 +

query_string = """

153 +

PREFIX eg: <https://example.com/>

154 +

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

155 +

CONSTRUCT { eg:subject eg:predicate ?o }

156 +

WHERE {

157 +

BIND(???EXPRESSION_PLACEHOLDER??? AS ?o)

158 +

}

159 +

""".replace(

160 +

"???EXPRESSION_PLACEHOLDER???", expression

161 +

)

162 +

result = graph.query(query_string)

163 +

assert result.type == "CONSTRUCT"

164 +

assert isinstance(result.graph, Graph)

165 +

logging.debug("result = %s", list(result.graph.triples((None, None, None))))

166 +

actual_result = result.graph.value(EG.subject, EG.predicate, any=False)

167 +

if isinstance(expected_result, type):

168 +

assert isinstance(actual_result, expected_result)

169 +

else:

170 +

assert expected_result == actual_result

171 + 172 + 173 +

@pytest.mark.parametrize(

174 +

["literal", "range", "expected_result"],

175 +

[

176 +

(Literal("en"), Literal("en"), True),

177 +

(Literal("en"), Literal("EN"), True),

178 +

(Literal("EN"), Literal("en"), True),

179 +

(Literal("EN"), Literal("EN"), True),

180 +

(Literal("en"), Literal("en-US"), False),

181 +

(Literal("en-US"), Literal("en-US"), True),

182 +

(Literal("en-gb"), Literal("en-GB"), True),

183 +

],

184 +

)

185 +

def test_lang_range_check(

186 +

literal: Literal, range: Literal, expected_result: bool

187 +

) -> None:

188 +

actual_result = _lang_range_check(range, literal)

189 +

assert expected_result == actual_result


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4