in assets/lambda_helper_neptune/python/rdflib/extras/infixowl.py [0:0]
def manchesterSyntax(thing, store, boolean=None, transientList=False):
"""
Core serialization
"""
assert thing is not None
if boolean:
if transientList:
liveChildren = iter(thing)
children = [manchesterSyntax(child, store) for child in thing]
else:
liveChildren = iter(Collection(store, thing))
children = [manchesterSyntax(
child, store) for child in Collection(store, thing)]
if boolean == OWL_NS.intersectionOf:
childList = []
named = []
for child in liveChildren:
if isinstance(child, URIRef):
named.append(child)
else:
childList.append(child)
if named:
def castToQName(x):
prefix, uri, localName = store.compute_qname(x)
return ':'.join([prefix, localName])
if len(named) > 1:
prefix = '( ' + ' AND '.join(map(
castToQName, named)) + ' )'
else:
prefix = manchesterSyntax(named[0], store)
if childList:
return str(prefix) + ' THAT ' + ' AND '.join(
[str(manchesterSyntax(x, store)) for x in childList])
else:
return prefix
else:
return '( ' + ' AND '.join(
[str(c) for c in children]) + ' )'
elif boolean == OWL_NS.unionOf:
return '( ' + ' OR '.join([str(c) for c in children]) + ' )'
elif boolean == OWL_NS.oneOf:
return '{ ' + ' '.join([str(c) for c in children]) + ' }'
else:
assert boolean == OWL_NS.complementOf
elif OWL_NS.Restriction in store.objects(
subject=thing, predicate=RDF.type):
prop = list(
store.objects(subject=thing, predicate=OWL_NS.onProperty))[0]
prefix, uri, localName = store.compute_qname(prop)
propString = ':'.join([prefix, localName])
label = first(store.objects(subject=prop, predicate=RDFS.label))
if label:
propString = "'%s'" % label
for onlyClass in store.objects(
subject=thing, predicate=OWL_NS.allValuesFrom):
return '( %s ONLY %s )' % (
propString, manchesterSyntax(onlyClass, store))
for val in store.objects(subject=thing, predicate=OWL_NS.hasValue):
return '( %s VALUE %s )' % (
propString,
manchesterSyntax(val.encode('utf-8', 'ignore'), store))
for someClass in store.objects(
subject=thing, predicate=OWL_NS.someValuesFrom):
return '( %s SOME %s )' % (
propString, manchesterSyntax(someClass, store))
cardLookup = {OWL_NS.maxCardinality: 'MAX',
OWL_NS.minCardinality: 'MIN',
OWL_NS.cardinality: 'EQUALS'}
for s, p, o in store.triples_choices(
(thing, list(cardLookup.keys()), None)):
return '( %s %s %s )' % (
propString, cardLookup[p], o.encode('utf-8', 'ignore'))
compl = list(store.objects(subject=thing, predicate=OWL_NS.complementOf))
if compl:
return '( NOT %s )' % (manchesterSyntax(compl[0], store))
else:
prolog = '\n'.join(
["PREFIX %s: <%s>" % (k, nsBinds[k]) for k in nsBinds])
qstr = \
prolog + \
"\nSELECT ?p ?bool WHERE {?class a owl:Class; ?p ?bool ." + \
"?bool rdf:first ?foo }"
initb = {Variable("?class"): thing}
for boolProp, col in \
store.query(qstr, processor="sparql", initBindings=initb):
if not isinstance(thing, URIRef):
return manchesterSyntax(col, store, boolean=boolProp)
try:
prefix, uri, localName = store.compute_qname(thing)
qname = ':'.join([prefix, localName])
except Exception:
if isinstance(thing, BNode):
return thing.n3()
return "<" + thing + ">"
logger.debug(list(store.objects(subject=thing, predicate=RDF.type)))
raise
return '[]' # +thing._id.encode('utf-8')+'</em>'
label = first(Class(thing, graph=store).label)
if label:
return label.encode('utf-8', 'ignore')
else:
return qname.encode('utf-8', 'ignore')