/usr/lib/python2.7/dist-packages/swap/cwm_list.py is in python-swap 1.2.1-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | """
$Id: cwm_list.py,v 1.15 2007/11/18 02:13:20 syosi Exp $
List and set built-ins for cwm
http://www.w3.org/2000/10/swap/cwm_list.py
See cwm.py and the os module in python
"""
from term import LightBuiltIn, RDFBuiltIn, Function, ReverseFunction, \
MultipleFunction, MultipleReverseFunction, \
CompoundTerm, N3Set, List, EmptyList, NonEmptyList
from set_importer import Set
from diag import verbosity, progress
import uripath
from RDFSink import List_NS, Logic_NS
ListOperationsNamespace = "http://www.w3.org/2000/10/swap/list#"
####################################################################
#
# List handling B U I L T - I N s
#
#
# Light Built-in classes
class BI_first(RDFBuiltIn, Function):
def evalObj(self, subj, queue, bindings, proof, query):
if not isinstance(subj, NonEmptyList): return None
return subj.first
class BI_rest(RDFBuiltIn, Function):
def evalObj(self, subj, queue, bindings, proof, query):
if not isinstance(subj, NonEmptyList): return None
return subj.rest
class BI_last(LightBuiltIn, Function):
def evalObj(self, subj, queue, bindings, proof, query):
if not isinstance(subj, NonEmptyList): return None
x = subj
while 1:
last = x
x = x.rest
if isinstance(x, EmptyList): return last.first
##class BI_map(LightBuiltIn, Function):
## def evalObj(self,subj, queue, bindings, proof, query):
## print subj
## store = self.store
## genID = store.genId()
## print genID
## hash = genID.rfind("#")
## print genID[hash+1:]
## symbol = genID[:hash]
## mapped = store.symbol(symbol)
## class Map(LightBuiltIn, Function):
## def evalObj(self, subj, queue, bindings, proof, query):
## print 'hi'
## return subj
##
## mapped.internFrag(genID[hash+1:], Map)
## return store.symbol(genID)
class BI_in(LightBuiltIn, MultipleReverseFunction):
"""Is the subject in the object?
Returnes a sequence of values."""
def eval(self, subj, obj, queue, bindings, proof, query):
if not isinstance(obj, CompoundTerm): return None
return subj in obj
def evalSubj(self, obj, queue, bindings, proof, query):
if not isinstance(obj, NonEmptyList) and not isinstance(obj, N3Set): return None
rea = None
return [x for x in obj] # [({subj:x}, rea) for x in obj]
class BI_member(LightBuiltIn, MultipleFunction):
"""Is the subject in the object?
Returnes a sequence of values."""
def eval(self, subj, obj, queue, bindings, proof, query):
if not isinstance(subj, CompoundTerm): return None
return obj in subj
def evalObj(self,subj, queue, bindings, proof, query):
if not isinstance(subj, NonEmptyList) and not isinstance(subj, N3Set): return None
rea = None
return [x for x in subj] # [({obj:x}, rea) for x in subj]
class BI_append(LightBuiltIn, Function):
"""Takes a list of lists, and appends them together.
"""
def evalObj(self, subj, queue, bindings, proof, query):
if not isinstance(subj, NonEmptyList): return None
r = []
for x in subj:
if not isinstance(x, List): return None
r.extend([a for a in x])
return self.store.newList(r)
class BI_members(LightBuiltIn, Function):
"""Makes a set from a list
"""
def evaluateObject(self, subj):
return Set(subj)
# Register the string built-ins with the store
def register(store):
# Done explicitly in llyn
# list = store.internURI(List_NS[:-1])
# list.internFrag("first", BI_first)
# list.internFrag("rest", BI_rest)
ns = store.symbol(ListOperationsNamespace[:-1])
ns.internFrag("in", BI_in)
ns.internFrag("member", BI_member)
ns.internFrag("last", BI_last)
ns.internFrag("append", BI_append)
ns.internFrag("members", BI_members)
## ns.internFrag("map", BI_map)
# ends
|