in assets/lambda_helper_neptune/python/rdflib/plugins/parsers/notation3.py [0:0]
def node(self, argstr, i, res, subjectAlready=None):
"""Parse the <node> production.
Space is now skipped once at the beginning
instead of in multipe calls to self.skipSpace().
"""
subj = subjectAlready
j = self.skipSpace(argstr, i)
if j < 0:
return j # eof
i = j
ch = argstr[i:i + 1] # Quick 1-character checks first:
if ch == "[":
bnodeID = self.here(i)
j = self.skipSpace(argstr, i + 1)
if j < 0:
self.BadSyntax(argstr, i,
"EOF after '['")
# Hack for "is" binding name to anon node
if argstr[j:j + 1] == "=":
if self.turtle:
self.BadSyntax(argstr, j, "Found '[=' or '[ =' when in turtle mode.")
i = j + 1
objs = []
j = self.objectList(argstr, i, objs)
if j >= 0:
subj = objs[0]
if len(objs) > 1:
for obj in objs:
self.makeStatement((self._context,
DAML_sameAs, subj, obj))
j = self.skipSpace(argstr, j)
if j < 0:
self.BadSyntax(argstr, i,
"EOF when objectList expected after [ = ")
if argstr[j:j + 1] == ";":
j = j + 1
else:
self.BadSyntax(argstr, i,
"objectList expected after [= ")
if subj is None:
subj = self.blankNode(uri=bnodeID)
i = self.property_list(argstr, j, subj)
if i < 0:
self.BadSyntax(argstr, j,
"property_list expected")
j = self.skipSpace(argstr, i)
if j < 0:
self.BadSyntax(argstr, i,
"EOF when ']' expected after [ <propertyList>")
if argstr[j:j + 1] != "]":
self.BadSyntax(argstr, j,
"']' expected")
res.append(subj)
return j + 1
if not self.turtle and ch == "{":
# if self.turtle:
# self.BadSyntax(argstr, i,
# "found '{' while in Turtle mode, Formulas not supported!")
ch2 = argstr[i + 1:i + 2]
if ch2 == '$':
# a set
i += 1
j = i + 1
List = []
first_run = True
while 1:
i = self.skipSpace(argstr, j)
if i < 0:
self.BadSyntax(argstr, i,
"needed '$}', found end.")
if argstr[i:i + 2] == '$}':
j = i + 2
break
if not first_run:
if argstr[i:i + 1] == ',':
i += 1
else:
self.BadSyntax(
argstr, i, "expected: ','")
else:
first_run = False
item = []
j = self.item(
argstr, i, item) # @@@@@ should be path, was object
if j < 0:
self.BadSyntax(argstr, i,
"expected item in set or '$}'")
List.append(self._store.intern(item[0]))
res.append(self._store.newSet(List, self._context))
return j
else:
# parse a formula
j = i + 1
oldParentContext = self._parentContext
self._parentContext = self._context
parentAnonymousNodes = self._anonymousNodes
grandParentVariables = self._parentVariables
self._parentVariables = self._variables
self._anonymousNodes = {}
self._variables = self._variables.copy()
reason2 = self._reason2
self._reason2 = becauseSubexpression
if subj is None:
subj = self._store.newFormula()
self._context = subj
while 1:
i = self.skipSpace(argstr, j)
if i < 0:
self.BadSyntax(
argstr, i, "needed '}', found end.")
if argstr[i:i + 1] == "}":
j = i + 1
break
j = self.directiveOrStatement(argstr, i)
if j < 0:
self.BadSyntax(
argstr, i, "expected statement or '}'")
self._anonymousNodes = parentAnonymousNodes
self._variables = self._parentVariables
self._parentVariables = grandParentVariables
self._context = self._parentContext
self._reason2 = reason2
self._parentContext = oldParentContext
res.append(subj.close()) # No use until closed
return j
if ch == "(":
thing_type = self._store.newList
ch2 = argstr[i + 1:i + 2]
if ch2 == '$':
thing_type = self._store.newSet
i += 1
j = i + 1
List = []
while 1:
i = self.skipSpace(argstr, j)
if i < 0:
self.BadSyntax(
argstr, i, "needed ')', found end.")
if argstr[i:i + 1] == ')':
j = i + 1
break
item = []
j = self.item(
argstr, i, item) # @@@@@ should be path, was object
if j < 0:
self.BadSyntax(argstr, i,
"expected item in list or ')'")
List.append(self._store.intern(item[0]))
res.append(thing_type(List, self._context))
return j
j = self.tok('this', argstr, i) # This context
if j >= 0:
self.BadSyntax(argstr, i,
"Keyword 'this' was ancient N3. Now use " +
"@forSome and @forAll keywords.")
# booleans
j = self.tok('true', argstr, i)
if j >= 0:
res.append(True)
return j
j = self.tok('false', argstr, i)
if j >= 0:
res.append(False)
return j
if subj is None: # If this can be a named node, then check for a name.
j = self.uri_ref2(argstr, i, res)
if j >= 0:
return j
return -1