Skip to main content

An Oort-based, WSGI-enabled toolkit for creating RDF-driven web apps.

Project description

OortPub is a toolkit for creating RDF-driven WSGI-compliant web applications.

The purpose of this is to make it easy to create web views of RDF Graphs by using some declarative python programming.

OortPub uses RDFLib, Paste and Genshi for the heaving lifting.

The RDF-to-objects facility comes from the Oort core package, released separately.

Overview

The main package is:

oort.sitebase

Contains classes used for declarative definitions of displays, used for matching resources and rendering a particular output (html, json etc.). By defining aspects, the type (or super-type) of a selected resource is mapped to a particular RdfQuery and an associated template.

One or more displays are put in the context of a resource viewer, which becomes a WSGI application ready to mount in your WSGI environment.

How?

Loads of RDF data like:

<site/main> a :SiteNode;
    dc:title "Main Page"@en, "Huvudsida"@sv;
    dc:altTitle "Main", "Hem"@sv;
    :relations (
        <site/faq>
        <site/about>
    );
    :nodeContent '''<h1 xml:lang="en">Welcome</h1>'''^^rdfs:XMLLiteral,
                 '''<h1 xml:lang="sv">V&#195;&#164;lkommen</h1>'''^^rdfs:XMLLiteral .

<persons/someone> a foaf:Person;
    foaf:name "Some One";
    foaf:knows <otherone> .

A couple of RdfQuerys:

from oort.rdfview import *
SITE = Namespace("http://example.org/ns/2007/website#")

class Titled(RdfQuery):
    title = localized(DC)
    altTitle = localized(DC.alternative)

class SiteNode(Titled):
    relations = collection(SITE) >> Titled
    nodeContent = localized_xml(SITE)

class Person(RdfQuery):
    name = one(FOAF)
    knows = each(FOAF) >> 'Person'

And a web application:

from oort.sitebase import *
from myapp import queries
from myapp.ns import SITE

class ExampleViewer(ResourceViewer):

    resourceBase = "http://example.org/oort/"
    langOrder = 'en', 'sv'

    class PlainWebDisplay(Display):
        name = "main"
        default = True
        outputMethod = 'xhtml'
        outputEncoding  = 'iso-8859-1'
        templateBase = "view/mainweb"
        globalQueries = {'languages': queries.sitelabels }
        aspects = [
                Aspect(SITE.SiteNode, "sitenode.xhtml",
                        {'node': queries.SiteNode}) ,
                Aspect(FOAF.Person, "person.xhtml",
                        {'person': queries.Person}) ,
                Aspect(RDFS.Resource, "not_found.xhtml")
            ]

    class JsonDisplay(Display):
        name = "json"
        contentType = 'application/x-javascript'
        aspects = [
                JsonAspect(SITE.SiteNode, {'node': queries.SiteNode})
            ]

But wait, there’s more..

Paste!

Makes WSGI go down smoothly. ResourceViewers take RDFLib Graph instances in their constructors and become callables adhering to the spec.

To get started quickly, run:

$ paster create -t oort_app
... fill in desired values in the dialogue
$ cd myapp/
$ vim # edit and test..
$ chmod u+x webapp.ini
$ ./webapp.ini

Why?

Because RDF is a formidable technology that could revolutionize the way information is treated and shared. Python and WSGI are exemplary technologies to use when building applications dealing with such data.

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

OortPub-0.1.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

OortPub-0.1-py2.5.egg (32.6 kB view details)

Uploaded Source

File details

Details for the file OortPub-0.1.tar.gz.

File metadata

  • Download URL: OortPub-0.1.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for OortPub-0.1.tar.gz
Algorithm Hash digest
SHA256 0da2b48b84c38542a071c1de1ac5c5db54490840b06935b93057d1a3652c78ec
MD5 a176fb04a23b299c75bf02a4174551aa
BLAKE2b-256 9a4f32edc953c94552e01bc71dce2d2edea24eeaacf9666886c4eea0951e4e1f

See more details on using hashes here.

File details

Details for the file OortPub-0.1-py2.5.egg.

File metadata

  • Download URL: OortPub-0.1-py2.5.egg
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for OortPub-0.1-py2.5.egg
Algorithm Hash digest
SHA256 889fd017727b7c21149fdd4c496a07f1cf9b6a081616fae665766e55f1290d39
MD5 2a32f88a53bf120d22284c53f7871e14
BLAKE2b-256 b19b1d0b888c566fadb34bb3c92cb4e98ee155a849b43f94e3640da2ccaeacfe

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page