现在最流行的语义Web库和工具(RDF存储,推理,规则,查询)是什 从历史上看,Python工具(cwm)是最早出现的工具之一,但似乎每个人都使用Java后端来提高性能,而Python似乎只是客户端.我的目的是学习技术,如果能够证明自己完成任务,可能会在生产系统中使用.该任务尚未定义,但我认为它构建了一个知识库,与一些外部资源相关联,以及自定义的可导航的Web前端.
如果基于Python的一些构建块不够好,那么Java/C/C++ /无论什么世界都适合它.
如果有一个或两个明显的赢家,那么典型的筹码也是有意义的.
谢谢.
Google的Proximity Beacon API文档使用Eddystone作为示例:
https://developers.google.com/beacons/proximity/register
但是,文档提到了另外两种类型的信标,AltBeacon和iBeacon.
如果我理解正确,应该使用类似的东西(改编自谷歌的例子):
{
"advertisedId": {
"type":"IBEACON",
"id":"base 64 of what???"},
"status":"ACTIVE",
"latLng": {
"latitude": 51.4935657,
"longitude": -0.1465538
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于iBeacon的UUID,Major,Minor(应该是base64'd),可接受的二进制格式是什么?
当文件在用户的底层文件系统中不断变化时,Chrome(可能还有其他浏览器)会抛出令人讨厌的 ERR_UPLOAD_FILE_CHANGED 错误,让用户感到疑惑。
(在 Chrome 上,多亏了这个非常合理的检查:
if (!expected_modification_time_.is_null() &&
(expected_modification_time_ - file_info_.last_modified)
.magnitude()
.InSeconds() != 0) {
return ERR_UPLOAD_FILE_CHANGED;
}
Run Code Online (Sandbox Code Playgroud)
)
然而,问题是,如何为用户提供更加用户友好的消息“对不起,您无法上传文件 xyz,因为它一直在不断变化”?
要重现该行为,请尝试在watch -n 0.5 touch -m your-file.jpg
命令处于活动状态时从类 Unix 系统上传文件(并且文件足够大,操作持续时间超过半秒)
(附带问题是为什么文件不断被修改,但这是另一次。我说过它非常可疑)
这可能是更普遍的问题,以防止 HTML 文件输入在使用 Android 的本机文件选择器时选择 Google Drive 中的文件
为了更好的可测试性和其他原因,最好在下面的问题中非常好地描述SQLAlchemy数据库会话配置非全局:
如何在没有全局变量的芹菜任务中设置sqlalchemy会话(并在https://github.com/celery/celery/issues/3561中讨论)
现在,问题是,如何优雅地处理元数据?如果我的理解是正确的,元数据可以有一次,例如:
engine = create_engine(DB_URL, encoding='utf-8', pool_recycle=3600,
pool_size=10)
# db_session = get_session() # this is old global session
meta = MetaData()
meta.reflect(bind=engine)
Run Code Online (Sandbox Code Playgroud)
反映每个任务执行不利于性能原因,元数据或多或少是稳定的和线程安全的结构(如果我们只读它).
但是,元数据有时会发生变化(celery不是db模式的"所有者"),从而导致工作者出错.
什么可以meta
以一种可测试的方式处理的优雅方式,还能够对底层数据库更改做出反应?(使用中的蒸馏器,如果相关的话).
我正在考虑使用alembic版本更改作为重新反映的信号,但不太确定如何使其在芹菜中很好地工作.例如,如果不止一个工作人员将立刻感知到更改,则meta
可以以非线程安全方式处理全局.
如果重要的话,芹菜使用的情况是独立的,没有网络框架模块/应用程序/芹菜应用程序中的任何内容.问题也得到了简化,因为只使用了SQLAlchemy Core,而不是对象映射器.
简化一点,我有一个以OWL表示的域本体(D),它描述了设备,它们的功能,配置.此外,对于每个供应商,我希望有特定于供应商的本体(V),它将连接到域1.问题是,如何对齐D和V?是否可以将V尽可能接近供应商术语,或者将D的类子类化为V(并且可能对数据属性和对象属性执行相同的操作)?这个想法是应用程序使用本体D进行查询和推理机制尽可能地隐藏供应商细节.
第一个变体似乎更合乎逻辑(毕竟,语义技术是关于互连),但我可以预见某些数据类型中的某些不匹配.例如,一个供应商可以按百分比表示电池电量,另一个供应商使用高,中,低等字.我不知道如何使用OWL将这些数据带到共同点.可能更难的情况,需要正则表达式应用程序和通常完成的任何脚本伏都教.(还有一个有趣的细节是直接使用dataproperties还是通过"包装"数据空间与对象属性和每个数据表的概念来添加一个间接层,以便为typemismath做更多的准备).
换句话说,似乎输入数据应该在进入RDF生态系统之前进行预处理......或者可能还有其他可能性?
(对于那些倾向于快速将问题标记为重复的人,我不是要求两个本体之间的映射,而是在OWL本身中安排"对齐"作为预处理与更丰富的"适配器模式")
在给定requirements.txt
的virtualenv环境下,从脚本检查是否满足要求并在不匹配的情况下提供详细信息的最佳方法是什么?
Pip在主要版本中更改了它的内部API,所以我看到一些建议不要使用它的parse_requirements
方法。
有一种方法pkg_resources.require(dependencies)
,但是然后如何解析需求文件,如github链接等呢?
这应该很简单,但是找不到任何指针。
更新:需要编程解决方案。
在以下代码中some_method
已通过元类添加:
from abc import ABC
from abc import ABCMeta
from typing import Type
def some_method(cls, x: str) -> str:
return f"result {x}"
class MyMeta(ABCMeta):
def __new__(mcs, *args, **kwargs):
cls = super().__new__(mcs, *args, **kwargs)
cls.some_method = classmethod(some_method)
return cls
class MyABC(ABC):
@classmethod
def some_method(cls, x: str) -> str:
return x
class MyClassWithSomeMethod(metaclass=MyMeta):
pass
def call_some_method(cls: Type[MyClassWithSomeMethod]) -> str:
return cls.some_method("A")
if __name__ == "__main__":
mc = MyClassWithSomeMethod()
assert isinstance(mc, MyClassWithSomeMethod)
assert call_some_method(MyClassWithSomeMethod) == "result A"
Run Code Online (Sandbox Code Playgroud)
然而,MyPy对此很不满意:
minimal_example.py:27: error: …
Run Code Online (Sandbox Code Playgroud) 如何告诉 sendgrid 停止装饰纯文本 URL?
如果重要的话,使用 Python 的 sendgrid SDK。
sendgrid.SendGridClient(username, pwd)
mail = sendgrid.Mail()
mail.set_html(html_message)
mail.set_text(text_message_with_urls) # <-- urls are here
...
sendgrid_client.send(mail)
Run Code Online (Sandbox Code Playgroud)
对于 HTML 端,这已经有了答案:
仍然需要对邮件的 HTML 部分进行跟踪。
Web应用程序页面包含两个大组件,它们在完全呈现时会调用回调.
问题是在两个组件完全呈现后调用函数.
这可以通过使用超时和轮询一些变量来解决,但我想应该有更好的方法.
让我们说,我有这样的:
function callMeAfterBothRendered() {...};
libA = libraryA($('.comp1'), {"rendered": function () {...}});
libB = libraryB($('.comp2'), {"rendered": function () {...}});
Run Code Online (Sandbox Code Playgroud)
我已经找到了链接承诺的一些材料,但不太确定如何应用于这种情况?
一个复杂的问题是,实际上这些库不是直接在同一个地方调用的(如上面简单示出的),而是在适配器"类"中更深层次的一些初始化方法中.
什么可以是这个的好解决方案,也可以很容易地推广到3个组件?
python ×4
celery ×1
file-upload ×1
forms ×1
graphdb ×1
ibeacon ×1
inference ×1
javascript ×1
metaclass ×1
mypy ×1
ontology ×1
owl ×1
owlim ×1
pip ×1
python-2.7 ×1
semantic-web ×1
sendgrid ×1
sesame ×1
sqlalchemy ×1
type-hinting ×1