From 0006595abadda23e160b17778eb20f4d4115f514 Mon Sep 17 00:00:00 2001 From: amita singh Date: Tue, 24 Apr 2012 16:21:04 +0530 Subject: addition of files --- gstudio/management/commands/generate_rdf_xml.py | 167 ++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 gstudio/management/commands/generate_rdf_xml.py (limited to 'gstudio/management') diff --git a/gstudio/management/commands/generate_rdf_xml.py b/gstudio/management/commands/generate_rdf_xml.py new file mode 100644 index 00000000..645f4ff3 --- /dev/null +++ b/gstudio/management/commands/generate_rdf_xml.py @@ -0,0 +1,167 @@ +from django.conf import settings +from django.utils.encoding import smart_str +from django.contrib.sites.models import Site +from django.template.loader import render_to_string +from django.core.management.base import NoArgsCommand +from django.core.management.base import BaseCommand, CommandError +from django.conf import settings + +from tagging.models import Tag + +from gstudio import __version__ +from gstudio.settings import PROTOCOL +from gstudio.models import Nodetype +from gstudio.models import Metatype + +import urllib +import rdflib +from rdflib.events import Dispatcher, Event +from rdflib.graph import ConjunctiveGraph as Graph +from rdflib import plugin +from rdflib.store import Store, NO_STORE, VALID_STORE +from rdflib.namespace import Namespace +from rdflib.term import Literal +from rdflib.term import URIRef +from tempfile import mkdtemp +from gstudio.models import * +from objectapp.models import * +from reversion.models import Version +from optparse import make_option +from pprint import pprint +import httplib2 +from urllib import urlencode + +def get_nodetype(): + """ + returns the model the id belongs to. + """ + try: + """ + ALGO: get object id, go to version model, return for the given id. + """ + name='student' + node = NID.objects.get(title=str(name)) + # Retrieving only the relevant tupleset for the versioned objects + vrs = Version.objects.filter(type=0 , object_id=node.id) + # Returned value is a list, so splice it . + vrs = vrs[0] + + except Error: + return "The item was not found." + + return vrs.object._meta.module_name + + +def rdf_description(notation='xml' ): + """ + Funtion takes title of node, and rdf notation. + """ + name='student' + valid_formats = ["xml", "n3", "ntriples", "trix"] + default_graph_uri = "http://gstudio.gnowledge.org/rdfstore" + # default_graph_uri = "http://example.com/" + configString = "/var/tmp/rdfstore" + + # Get the Sleepycat plugin. + store = plugin.get('IOMemory', Store)('rdfstore') + + + + # Open previously created store, or create it if it doesn't exist yet + graph = Graph(store="IOMemory", + identifier = URIRef(default_graph_uri)) + path = mkdtemp() + rt = graph.open(path, create=False) + if rt == NO_STORE: + #There is no underlying Sleepycat infrastructure, create it + graph.open(path, create=True) + else: + assert rt == VALID_STORE, "The underlying store is corrupt" + + + # Now we'll add some triples to the graph & commit the changes + # rdflib = Namespace('http://sbox.gnowledge.org/gstudio/') + graph.bind("gstudio", "http://gnowledge.org/") + exclusion_fields = ["id", "rght", "node_ptr_id", "image", "lft", "_state", "_altnames_cache", "_tags_cache", "nid_ptr_id", "_mptt_cached_fields"] + node_type=get_nodetype() + if (node_type=='gbobject'): + node=Gbobject.objects.get(title=name) + elif (node_type=='objecttype'): + node=Objecttype.objects.get(title=name) + elif (node_type=='metatype'): + node=Metatype.objects.get(title=name) + elif (node_type=='attributetype'): + node=Attributetype.objects.get(title=name) + elif (node_type=='relationtype'): + node=Relationtype.objects.get(title=name) + elif (node_type=='attribute'): + node=Attribute.objects.get(title=name) + elif (node_type=='complement'): + node=Complement.objects.get(title=name) + elif (node_type=='union'): + node=Union.objects.get(title=name) + elif (node_type=='intersection'): + node=Intersection.objects.get(title=name) + elif (node_type=='expression'): + node=Expression.objects.get(title=name) + elif (node_type=='processtype'): + node=Processtype.objects.get(title=name) + elif (node_type=='systemtype'): + node=Systemtype.objects.get(title=name) + + + + + + node_url=node.get_absolute_url() + site_add= node.sites.all() + a = site_add[0] + host_name =a.name + #host_name=name + link='http://' + #Concatenating the above variables will give the url address. + + url_add=link+host_name+node_url + rdflib = Namespace(url_add) + # node=Objecttype.objects.get(title=name) + + node_dict=node.__dict__ + + subject=str(node_dict['id']) + for key in node_dict: + if key not in exclusion_fields: + predicate=str(key) + pobject=str(node_dict[predicate]) + graph.add((rdflib[subject], rdflib[predicate], Literal(pobject))) + + + rdf_code=graph.serialize(format=notation) + + + + + + + #graph = rdflib.Graph("IOMemory") + #graph.open("store", create=True) + #graph.parse(rdf_code) + + # print out all the triples in the graph + # for subject, predicate, object in graph: + # print subject, predicate, object + # store.add(self,(subject, predicate, object),context) + + + graph.commit() + print rdf_code + graph.close() + + + +class Command(NoArgsCommand): + + def handle(self, **options): + + + get_nodetype() + rdf_description() -- cgit v1.2.3-70-g09d2