This file is indexed.

/usr/share/pyshared/swap/cwm_set.py is in python-swap 1.2.1-5.

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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
"""


$Id: cwm_set.py,v 1.4 2007/06/26 02:36:15 syosi Exp $

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, 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

SetOperationsNamespace = "http://www.w3.org/2000/10/swap/set#"

###############################################################################################
#
#                    List handling   B U I L T - I N s
#
#
#   Light Built-in classes



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 or 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 subj # [({obj:x}, rea) for x in subj]


class BI_union(LightBuiltIn, Function):
    """Takes a set or list of sets, and finds the union

    """
    def evaluateObject(self, subj):
        ret = Set()
        for m in subj:
            ret.update(m)
        return ret

class BI_intersection(LightBuiltIn, Function):
    """Takes a set or list of sets, and finds the intersection


    """
    def evaluateObject(self, subj):
        ret = None
        for m in subj:
            if ret is None:
                ret = Set(m)
            else:
                ret.intersection_update(m)
        if ret is None:
            return Set()
        return ret

class BI_symmetricDifference(LightBuiltIn, Function):
    """Takes a set or list of two sets, and finds the symmetric difference


    """
    def evaluateObject(self, subj):
        if len(subj) != 2:
            raise ValueError('A symmetric difference of more than two things makes no sense')
        ret = Set()
        for m in subj:
            ret.symmetric_difference_update(m)
        return ret

class BI_difference(LightBuiltIn, Function):
    """Takes a list of two sets, and finds the difference


    """
    def evaluateObject(self, subj):
        if len(subj) != 2:
            raise ValueError('A symmetric difference of more than two things makes no sense')
        difference = N3Set.difference
        return difference(subj[0], subj[1])

class BI_oneOf(LightBuiltIn, ReverseFunction):
    """ Make a set from a list

    """
    def evaluateSubject(self, obj):
        return Set(obj)

#####################################
##
##   Sets and Formulae --- set:in is the inverse of most of these
##
class BI_subjects(LightBuiltIn, Function):
    """Return the set of subjects used in a formula

    """
    def evalObj(self, subj, queue, bindings, proof, query):
        if not isinstance(subj, Formula):
            raise ValueError('Only a formula has statements')
        return N3Set([x.subject() for x in subj])

class BI_predicates(LightBuiltIn, Function):
    """Return the set of subjects used in a formula

    """
    def evalObj(self, subj, queue, bindings, proof, query):
        if not isinstance(subj, Formula):
            raise ValueError('Only a formula has statements')
        return N3Set([x.predicate() for x in subj])

class BI_objects(LightBuiltIn, Function):
    """Return the set of subjects used in a formula

    """
    def evalObj(self, subj, queue, bindings, proof, query):
        if not isinstance(subj, Formula):
            raise ValueError('Only a formula has statements')
        return N3Set([x.object() for x in subj])

class BI_triples(LightBuiltIn, Function):
    """Return the set of triple used in a formula

    """
    def evalObj(self, subj, queue, bindings, proof, query):
        if not isinstance(subj, Formula):
            raise ValueError('Only a formula has statements')
        return N3Set([x.asFormula() for x in subj])

##class BI_existentials(LightBuiltIn, Function):
##    """Return the set of subjects used in a formula
##
##    """
##    def evalObj(self, subj, queue, bindings, proof, query):
##        if not isinstance(subj, Formula):
##            raise ValueError('Only a formula has statements')
##        return N3Set(subj.existentials())
##
##class BI_universals(LightBuiltIn, Function):
##    """Return the set of subjects used in a formula
##
##    """
##    def evalObj(self, subj, queue, bindings, proof, query):
##        if not isinstance(subj, Formula):
##            raise ValueError('Only a formula has statements')
##        return N3Set(subj.universals())

#  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(SetOperationsNamespace[:-1])
    ns.internFrag("in", BI_in)
    ns.internFrag("member", BI_member)
    ns.internFrag("union", BI_union)
    ns.internFrag("intersection", BI_intersection)
    ns.internFrag("symmetricDifference", BI_symmetricDifference)
    ns.internFrag("difference", BI_difference)
    ns.internFrag("oneOf", BI_oneOf)
# ends