一个基于oort、支持wsgi的工具包,用于创建rdf驱动的web应用程序。

OortPub的Python项目详细描述


oortpub是一个用于创建RDF驱动的WSGI兼容web应用程序的工具包。

这样做的目的是通过 使用一些声明性的python编程。

oortpub使用RDFLibPasteGenshi进行升降。

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&#195;&#164;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是典型的技术 在生成处理此类数据的应用程序时使用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序