Example #1
0
 def __init__(self, uri, sink, baseURI=False):
     super(N3Processor, self).__init__(uri, branches, regexps)
     if baseURI is False:
         self.baseURI = uri
     else:
         self.baseURI = baseURI
     self.sink = sink
     self.bindings = {'': urijoin(self.baseURI, '#')}
     self.counter = 0
     self.prefix = False
     self.userkeys = False
     self.anonsubj = False
     self.litinfo = False
     self.forAll = False
     self.forSome = False
     self.universals = {}
     self.existentials = {}
     self.formulae = []
     self.labels = []
     self.mode = []
     self.triples = []
     self.pathmode = 'path'
     self.paths = []
     self.lists = []
     self.bnodes = {}
Example #2
0
 def __init__(self, uri, sink, baseURI=False):
     super(N3Processor, self).__init__(uri, branches, regexps)
     if baseURI is False:
         self.baseURI = uri
     else:
         self.baseURI = baseURI
     self.sink = sink
     self.bindings = {"": urijoin(self.baseURI, "#")}
     self.counter = 0
     self.prefix = False
     self.userkeys = False
     self.anonsubj = False
     self.litinfo = False
     self.forAll = False
     self.forSome = False
     self.universals = {}
     self.existentials = {}
     self.formulae = []
     self.labels = []
     self.mode = []
     self.triples = []
     self.pathmode = "path"
     self.paths = []
     self.lists = []
     self.bnodes = {}
Example #3
0
 def uri(self, tok):
     u = URIRef(urijoin(self.baseURI, tok))
     if self.universals.has_key(u):
         formula, var = self.universals[u]
         if formula in self.formulae:
             return var
     if self.existentials.has_key(u):  # @@ elif?
         formula, bnode = self.existentials[u]
         if formula in self.formulae:
             return bnode
     return u
Example #4
0
 def uri(self, tok):
     u = URIRef(urijoin(self.baseURI, tok))
     if self.universals.has_key(u):
         formula, var = self.universals[u]
         if formula in self.formulae:
             return var
     if self.existentials.has_key(u):  # @@ elif?
         formula, bnode = self.existentials[u]
         if formula in self.formulae:
             return bnode
     return u
Example #5
0
    def nodeElement(self, e):
        # *Only* call with an Element
        if rdf_about_tag in e.attrib:
            subj = Uri(urijoin(e.base, e.attrib[rdf_about_tag]))
        elif rdf_ID_tag in e.attrib:
            subj = Uri(urijoin(e.base, '#' + e.attrib[rdf_ID_tag]))
        else:
            nodeID = None
            if rdf_nodeID_tag in e.attrib:
                nodeID = e.attrib[rdf_nodeID_tag]
            subj = self.bNode(nodeID=nodeID)

        if e.tag != rdf_Description_tag:
            self.addTriple(subj.value, rdf_type_uri, Uri(self.uriForTag(e.tag)))
        if rdf_type_tag in e.attrib:
            self.addTriple(subj.value, rdf_type_uri, Uri(e.attrib[rdf_type_tag]))
        for attr, value in e.attrib.items():
            if attr not in DISALLOWED and attr != rdf_type_tag:
                objt = Literal(value, lang=e.attrib.get(x_lang_tag))
                self.addTriple(subj.value, self.uriForTag(attr), objt)

        for element in e.iterchildren(tag=Element):
            self.propertyElt(subj.value, element)
        return subj
Example #6
0
 def emptyPropertyElt(self, subj, e):
     uri = self.uriForTag(e.tag)
     if sum(1 for k in e.attrib.keys() if not k == rdf_ID_tag) == 0:
         obj = Literal(e.text or '', lang=e.attrib.get(x_lang_tag))
     else:
         resource = e.attrib.get(rdf_resource_tag)
         if not resource is None:
             obj = Uri(urijoin(e.base, resource))
         else:
             obj = self.bNode(nodeID=e.attrib.get(rdf_nodeID_tag))
         for attrib, value in filter(lambda (k, v): k not in DISALLOWED, e.attrib.items()):
             if attrib != rdf_type_tag:
                 self.addTriple(obj.value, self.uriForTag(attrib), Literal(value, lang=e.attrib.get(x_lang_tag)))
             else:
                 self.addTriple(obj.value, rdf_type_uri, Uri(value))
Example #7
0
 def reify(self, s, p, o, base, rdfID):
     r = urijoin(base, '#' + rdfID)
     self.addTriple(r, rdf_subject_uri, BNode(s) if s.startswith('_:') else Uri(s))
     self.addTriple(r, rdf_predicate_uri, Uri(p))
     self.addTriple(r, rdf_object_uri, o)
     self.addTriple(r, rdf_type_uri, Uri(rdf_Statement_uri))