一个基于oort、支持wsgi的工具包,用于创建rdf驱动的web应用程序。
OortPub的Python项目详细描述
oortpub是一个用于创建RDF驱动的WSGI兼容web应用程序的工具包。
这样做的目的是通过 使用一些声明性的python编程。
oortpub使用RDFLib、Paste和Genshi进行升降。
rdf to objects工具来自Oort核心包,发布 另外。
概述
主程序包是:
- oort.sitebase
包含用于displays的声明性定义的类,用于 匹配资源并呈现特定输出(HTML、JSON等)。由 定义aspects,所选资源的类型(或超级类型)是 映射到特定的rdfquery和关联的模板。
一个或多个显示器放在resource viewer的上下文中,其中 成为一个可以在您的wsgi环境中装载的wsgi应用程序。
怎么做?
加载RDF数据,如:
<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älkommen</h1>'''^^rdfs:XMLLiteral . <persons/someone> a foaf:Person; foaf:name "Some One"; foaf:knows <otherone> .
几个问题:
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'
以及一个web应用程序:
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}) ]
但是等等,还有…
粘贴!
使wsgi平稳运行。resourceviewers获取rdflibGraph实例 他们的构造器,并根据规范成为可调用的。
要快速开始,请运行:
$ 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
为什么?
因为rdf是一种强大的技术,它可以彻底改变 信息被处理和共享。python和wsgi是典型的技术 在生成处理此类数据的应用程序时使用。