1
17
RDF不支持边缘属性,所以 简单的回答是否定的 无边性质的纯RDF三元组如果我们不想注释边缘,Bob和Mary之间的关系就是一个三元组,Bob是主语,Mary是宾语,Loves是谓语:
那么我们如何添加注释呢? 选项1:使用RDF具体化RDF有一个称为RDF具体化的内置解决方案。它允许对语句进行陈述:
选项2:将关系建模为实体另一种方法是改变模型。我们没有考虑人与人之间的爱的边缘,而是把它本身看作一个节点。一种表示关系的节点,它连接到所涉及的两方。
所以在我们的模型中,我们创建了一个类
选项3:使用RDF*a proposal called RDF* 这很好地解决了这个问题(有时称为RDR或 物化做得对 .RDF*/RDR添加了新语法,允许三元组成为其他三元组的主题:
缺点是它是非标准的,到目前为止只有少数系统支持( Blazegraph , AnzoGraph an extension for Jena ). 截至2019年4月,海王星不在其中。 这在基本RDF版本以及选项1和选项3中都很容易做到:
选项2需要不同的查询,因为更改了模型:
问:鲍勃爱上了谁?为什么?方案1 ,RDF具体化:
我发现这个查询不是很直观,因为它讨论RDF语句,而我们真正感兴趣的是人和关系。 方案2
这在我看来是更好的;一旦您接受了关系是这个模型中的实体,它就变得相当直观了。
这是简洁和直观的,所以很遗憾我们目前不能在大多数SPARQL系统中使用它! |
2
0
AnzoGraph支持RDF*/SPARQL*,因此您实际上可以使用简洁和最直观的格式来表示数据和查询数据。
现在查询:
结果:
|
Zuza · 小精灵和小叮当的区别 7 年前 |
Manish Pradhan · 使用标签和关系设计Neo4J数据模型 7 年前 |
James · 在Neo4j中查找循环 7 年前 |
mohammad_1m2 · neo4j:无效输入“>”:应为空白 8 年前 |