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 = {}
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 = {}
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
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
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))
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))