是否有任何RDF序列化格式(如Notation 3)支持隐式具体化,以便轻松地表示关于语句的语句?
例如,假设我有这样一句话“玛丽买了一所房子”,我可以用N3来表示它,如下所示:
:Mary :bought-a :house .现在,假设我想添加关于此语句的元语句,例如“我从Rob那里听到了这个”。
直观地说,我希望能够通过编写以下内容来表示这一点:
:Mary :bought-a :house .
:heard-by :me .
:heard-from :Rob .然而,我认为在N3中“正式”表示的方式应该是这样的:
[ a rei:Statement;
rei:subject [rei:uri :Mary];
rei:predicate [rei:uri :bought-a];
rei:object [rei:value :house]
] [
:heard-by :me;
:heard-from :Rob;
] .这显然有点复杂,也更难读。如果我需要对关于语句的语句进行声明,事情就会变得更加复杂。例如:“我是从Rob那里听到的,当时Rob正走在街上。”
在RDF序列化格式中表示它的正确和最简单的方式是什么?
发布于 2011-03-10 06:21:57
我会使用命名图,并且不会害怕在图中放入一条语句。您可以将原始语句放在图中,然后元语句将与该图相关,而不是其中的语句。这些可以放到一个或多个其他图中,然后如果你需要一些疯狂的元语句,那么你可以通过引用包含元语句的图,以与原始元语句相同的方式来处理它。
在推理或稍后使用图形时,您可能需要将所有叶/非元图形“折叠”到单个图形中。这也是一种对元数据进行推理的好方法,以便发现哪些图应该“折叠”到您信任的语句中,以便进行实际推理。
发布于 2011-03-08 01:46:34
如果可能,我会尽量避免隐含的具体化,原因有很多,但更具体的原因是:
在为自己编写了许多语义Web应用程序之后,我很少使用隐式具体化,这让我感到遗憾。
在您的例子中,我将尝试通过使用Blank Node作为heard-by和heard-from谓词的中间连接点,以显式具体化的方式对其进行建模。类似于(在RDF/Turtle中):
@prefix : <http://somedata.org/id/> .
:Mary :bought-a [
a :House;
:heard-by :me;
:heard-from :Rob ] .在普通的RDF/ntriples中,这与(用rapper转换)相同:
<http://somedata.org/id/Mary> <http://somedata.org/id/bought-a> _:genid1 .
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://somedata.org/id/House> .
_:genid1 <http://somedata.org/id/heard-by> <http://somedata.org/id/me> .
_:genid1 <http://somedata.org/id/heard-from> <http://somedata.org/id/Rob> .正如你所看到的,Mary购买了rdf:type House的一些东西,你也听到了from Rob和Yourself。
我发现这种解决方案比隐式具体化更干净,成本更低。我希望这能帮到你。
https://stackoverflow.com/questions/5221988
复制相似问题