一个小型的django应用程序,它使得使用4store rdf数据库进行开发更加容易。
django-4store的Python项目详细描述
Author: | Martin Galpin |
---|---|
Contact: | m@66laps.com |
django-4store是一个小型django应用程序,它使开发 使用4Store RDF database更简单的应用程序。
安装
django-4store位于PyPi上,easy_install或buildout:
$ easy_install django-4store
或者,克隆存储库并将其放在django中 投影或在$PYTHONPATH:
$ git clone git://github.com/66laps/django-4store.git
配置
编辑settings.py并将fourstore添加到 INSTALLED_APPS。
您还必须向settings.py:
添加两个附加设置FOURSTORE_KBNAME = "demo" # Name of 4store knowledge base FOURSTORE_PORT = 6667 # Port for 4store HTTP server
建议(但不是必需)也将常量设置为 同时SPARQL端点:
SPARQL_ENDPOINT = "http://localhost:6667/sparql/"
依赖于此终结点url的代码将在 测试(请参见Test Cases.)
管理命令
提供了两个管理命令来包装标准的4s-* 方便的命令。
第一个,4store-import将创建并导入指定的 将文件放入4store知识库(在settings.py)中:
$ python manage.py 4store-import rdf/card.rdf rdf/myself.n3
可以指定标志--recursive递归地添加任何rdf 目录中的文件。
注意,导入数据将覆盖 知识库。
第二个命令4store将在端口上启动http服务器 在settings.py:
中指定$ python manage.py 4store ...
测试用例
包含django.test.Testcase的子类。这提供了 启动独立4store服务器并自动 正在导入测试设备。
例如,下面的测试用例可以用来测试任何4store 从属代码:
from django.conf import settings from HTTP4Store import HTTP4Store from fourstore.test import Base4StoreTest class MySemanticTestCase(Base4StoreTest): kbfixtures = ["card.rdf", "someone.n3"] def test_something(self): store = HTTP4Store(settings.SPARQL_ENDPOINT) response = store.sparql("SELECT * WHERE { ?s ?p ?o . } ") self.assertEquals(..., response)
测试设备应该放在 正在测试的应用程序(请注意,类变量是kbfixtures)。
django设置属性settings.SPARQL_ENDPOINT是 自动更新为当前终结点URL。
服务器在测试之间重新初始化,其操作取决于 在setUp和tearDown上。如果需要重写这些方法, 确保仍调用父实现:
class MySemanticTestCase(Base4StoreTest): ... def setUp(self): Base4StoreTest.setUp(self) // do something def tearDown(self): Base4StoreTest.tearDown(self) // do something
视图
Cross-site HTTP Requests通常被 许多historically well documented security reasons。这些限制阻止 Web应用程序直接与SPARQL端点通信。
django-4store提供了解决此问题的方法。景色 fourstore.views.sparql_proxy中继它接收到的所有http请求 到指定的端点(在urls.py中给定)。
例如,要与Dbpedia通信,请按如下方式配置urls.py:
from django.conf.urls.defaults import url, patterns urlpatterns = patterns('fourstore.views', url(r"^sparql/$", "sparql_proxy", {"sparql_endpoint": "http://www.dbpedia.org/sparql/"}), )
向http://www.yourdjangoapp.com/sparql/发出的任何请求现在都是 自动中继到http://www.dbpedia.org/sparql/,然后 透明响应发送回原始浏览器。
注意,根据SPARQL Protocol,所有请求都必须具有 ^ application/x-www-form-urlencoded中的{tt24}$。
测试套件
Django-4商店的测试套件包括:
$ python manage.py test fourstore
许可证
这个库是免费软件;您可以重新分发和/或修改它 根据GNU的条款 由自由软件基金会出版;或 许可证,或(由您选择)任何更高版本。
这个图书馆的发行是希望它会有用,但是 没有任何保证;甚至没有 适销性或适合某一特定目的的适销性。看GNU 更详细的信息,请参阅较低的通用公共许可证。
你应该收到一份GNU的副本 与此库一起使用许可证;如果没有,请写入免费软件 马萨诸塞州波士顿富兰克林街51号5楼基金会公司 02110-1301美国