Skip to content

Commit

Permalink
added void profile
Browse files Browse the repository at this point in the history
  • Loading branch information
situx committed Jan 20, 2024
1 parent 819aa16 commit 26454b6
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 8 deletions.
3 changes: 0 additions & 3 deletions src/sparqlunicorn_ontdoc/doc/docconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,9 +412,6 @@ class DocConfig:
".wav":"audio"
}




classtreequery="""PREFIX owl: <http://www.w3.org/2002/07/owl#>\n
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n
Expand Down
66 changes: 61 additions & 5 deletions src/sparqlunicorn_ontdoc/docgeneration.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,10 @@ def resolveTemplate(templatename):

class OntDocGeneration:

def __init__(self, prefixes,prefixnamespace,prefixnsshort,license,labellang,outpath,graph,createIndexPages,createColl,metadatatable,generatePagesForNonNS,createVOWL,ogcapifeatures,iiif,ckan=True,solidexport=True,localOptimized=False,imagemetadata=None,startconcept=None,deploypath="",logoname="",templatename="default",offlinecompat=False,exports=["json","ttl"],datasettitle="",publisher="",publishingorg=""):
def __init__(self, prefixes,modtime,prefixnamespace,prefixnsshort,license,labellang,outpath,graph,createIndexPages,createColl,metadatatable,generatePagesForNonNS,createVOWL,ogcapifeatures,iiif,ckan=True,solidexport=True,localOptimized=False,imagemetadata=None,startconcept=None,deploypath="",logoname="",templatename="default",offlinecompat=False,exports=["json","ttl"],datasettitle="",publisher="",publishingorg=""):
self.prefixes=prefixes
self.prefixnamespace = prefixnamespace
self.modtime=modtime
self.namespaceshort = prefixnsshort.replace("/","")
self.outpath=outpath
self.exports=exports
Expand Down Expand Up @@ -280,7 +281,7 @@ def generateOntDocForNameSpace(self, prefixnamespace,dataformat="HTML"):
uritotreeitem={}
curlicense=self.processLicense()
self.licensehtml=curlicense
self.getPropertyRelations(self.graph, outpath)
numprops=self.getPropertyRelations(self.graph, outpath)
if self.createColl:
self.graph=self.createCollections(self.graph,prefixnamespace)
if self.logoname!=None and self.logoname!="" and not self.logoname.startswith("http"):
Expand All @@ -298,6 +299,7 @@ def generateOntDocForNameSpace(self, prefixnamespace,dataformat="HTML"):
labeltouri[str(tup[1])] = str(sub)
uritolabel[str(sub)] = {"label":str(tup[1])}
break
numsubjects=len(subjectstorender)
if os.path.exists(outpath + corpusid + '_search.js'):
try:
with open(outpath + corpusid + '_search.js', 'r', encoding='utf-8') as f:
Expand Down Expand Up @@ -326,6 +328,7 @@ def generateOntDocForNameSpace(self, prefixnamespace,dataformat="HTML"):
for tr in prevtree:
if tr["id"] not in classidset:
tree["core"]["data"].append(tr)
numclasses=len(classidset)
with open(outpath + "style.css", 'w', encoding='utf-8') as f:
f.write(templates["stylesheet"])
f.close()
Expand Down Expand Up @@ -378,6 +381,8 @@ def generateOntDocForNameSpace(self, prefixnamespace,dataformat="HTML"):
self.updateProgressBar(subtorencounter, subtorenderlen,"Processing Subject URIs")
self.checkGeoInstanceAssignment(uritotreeitem)
classlist=self.assignGeoClassesToTree(tree)
voidgraph=self.createVoidDataset(self.datasettitle,len(self.graph),numclasses,numsubjects,numprops,numsubjects,0)
self.graph+=voidgraph
if self.generatePagesForNonNS:
labeltouri=self.getSubjectPagesForNonGraphURIs(nonnsmap, self.graph, prefixnamespace, corpusid, outpath, self.license,prefixnamespace,uritotreeitem,labeltouri)
with open(outpath + corpusid + "_classtree.js", 'w', encoding='utf-8') as f:
Expand Down Expand Up @@ -509,6 +514,7 @@ def getPropertyRelations(self,graph,outpath):
with open(outpath+"proprelations.js", 'w', encoding='utf-8') as f:
f.write("var proprelations="+json.dumps(predicates))
f.close()
return predicatecounter

def createCollections(self,graph,namespace):
classToInstances={}
Expand Down Expand Up @@ -564,6 +570,55 @@ def createCollections(self,graph,namespace):
graph.add((URIRef(colluri),URIRef(collrelprop),URIRef(instance)))
return graph


def vocabulariesToDCSubjects(self,vocabs):
print("vocabstosubjects")

def createVoidDataset(self,dsname,numtriples,numclasses,numinds,numpredicates,numsubjects,numobjects):
print("void")
g=Graph()
voidds=self.prefixnamespace+"theds"
g.add(URIRef(voidds),URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),URIRef("http://rdfs.org/ns/void#Dataset"))
g.add(URIRef(voidds), URIRef("http://www.w3.org/2000/01/rdf-schema#label"),
Literal(dsname,lang="en"))
g.add(URIRef(voidds), URIRef("http://purl.org/dc/terms/title"),
Literal(dsname,lang="en"))
g.add(URIRef(voidds), URIRef("http://purl.org/dc/terms/modified"),
Literal(self.modtime,datatype="http://www.w3.org/2001/XMLSchema#dateTime"))
g.add(URIRef(voidds), URIRef("http://purl.org/dc/terms/license"),
URIRef(self.licenseuri))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#dataDump"),
URIRef(self.deploypath+"/index.ttl"))
g.add(URIRef(voidds), URIRef("http://xmlns.com/foaf/0.1/homepage"),
URIRef(self.deploypath))
g.add(URIRef(voidds), URIRef("http://xmlns.com/foaf/0.1/page"),
URIRef(self.deploypath+"/index.html"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#dataDump"),
URIRef(self.deploypath+"/index.ttl"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#feature"),
URIRef("http://www.w3.org/ns/formats/Turtle"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#classes"),
Literal(numclasses,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#entities"),
Literal(numinds,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#distinctObjects"),
Literal(numobjects,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#distinctSubjects"),
Literal(numsubjects,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#properties"),
Literal(numpredicates,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#triples"),
Literal(numtriples,datatype="http://www.w3.org/2001/XMLSchema#integer"))
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#uriSpace"),
Literal(self.prefixnamespace,datatype="http://www.w3.org/2001/XMLSchema#string"))
for ns_prefix, namespace in g.namespaces():
g.add(URIRef(voidds), URIRef("http://rdfs.org/ns/void#vocabulary"),
URIRef(namespace))
g.serialize(self.outpath+"/void.ttl", encoding="utf-8")
return g



def getClassTree(self,graph, uritolabel,classidset,uritotreeitem):
results = graph.query(self.preparedclassquery)
tree = {"plugins": ["defaults","search", "sort", "state", "types", "contextmenu"], "search": {"show_only_matches":True}, "types": {
Expand Down Expand Up @@ -1414,7 +1469,6 @@ def main():
if os.path.exists(resourcepath+'/prefixes.json'):
with open(resourcepath+'/prefixes.json', encoding="utf-8") as f:
prefixes = json.load(f)

prefixes["reversed"]["http://purl.org/cuneiform/"]="cunei"
prefixes["reversed"]["http://purl.org/graphemon/"]="graphemon"
prefixes["reversed"]["http://www.opengis.net/ont/crs/"]="geocrs"
Expand Down Expand Up @@ -1506,6 +1560,8 @@ def main():
try:
g = Graph()
g.parse(fp)
modtimed=os.path.getmtime(fp)
modtime = modtimed.strftime("%Y-%m-%dT%H:%M:%S")
if args.prefixns==None or args.prefixns=="None":
print("No Datanamespace defined. Trying to detect it...")
pres=DocUtils.getDataNamespace(g)
Expand All @@ -1515,9 +1571,9 @@ def main():
args.prefixns=pres
print("Detected "+args.prefixns+" as data namespace")
if fcounter<len(outpath):
docgen=OntDocGeneration(prefixes,args.prefixns,args.prefixnsshort,args.license,args.labellang,outpath[fcounter],g,args.createIndexPages,args.createCollections,args.metadatatable,args.nonnspages,args.createvowl,args.ogcapifeatures,args.iiifmanifest,args.ckanapi,args.solidexport,args.localOptimized,args.imagemetadata,args.startconcept,args.deploypath,args.logourl,args.templatename,args.offlinecompat,dataexports,args.datasettitle,args.publisher,args.publishingorg)
docgen=OntDocGeneration(prefixes,modtime,args.prefixns,args.prefixnsshort,args.license,args.labellang,outpath[fcounter],g,args.createIndexPages,args.createCollections,args.metadatatable,args.nonnspages,args.createvowl,args.ogcapifeatures,args.iiifmanifest,args.ckanapi,args.solidexport,args.localOptimized,args.imagemetadata,args.startconcept,args.deploypath,args.logourl,args.templatename,args.offlinecompat,dataexports,args.datasettitle,args.publisher,args.publishingorg)
else:
docgen=OntDocGeneration(prefixes,args.prefixns,args.prefixnsshort,args.license,args.labellang,outpath[-1],g,args.createIndexPages,args.createCollections,args.metadatatable,args.nonnspages,args.createvowl,args.ogcapifeatures,args.iiifmanifest,args.ckanapi,args.solidexport,args.localOptimized,args.imagemetadata,args.startconcept,args.deploypath,args.logourl,args.templatename,args.offlinecompat,dataexports,args.datasettitle,args.publisher,args.publishingorg)
docgen=OntDocGeneration(prefixes,modtime,args.prefixns,args.prefixnsshort,args.license,args.labellang,outpath[-1],g,args.createIndexPages,args.createCollections,args.metadatatable,args.nonnspages,args.createvowl,args.ogcapifeatures,args.iiifmanifest,args.ckanapi,args.solidexport,args.localOptimized,args.imagemetadata,args.startconcept,args.deploypath,args.logourl,args.templatename,args.offlinecompat,dataexports,args.datasettitle,args.publisher,args.publishingorg)
subrend=docgen.generateOntDocForNameSpace(args.prefixns,dataformat="HTML")
except Exception as inst:
print("Could not parse "+str(fp))
Expand Down

0 comments on commit 26454b6

Please sign in to comment.