我希望为数据集提供一些摘要统计信息,我想在图表中列出不同类型的边缘实体和节点(顶点)实体。
例如:
- >在Twitter用户的社交网络图和以下关系(同构图)中,只有一种类型的顶点实体(用户),但在诸如ConceptNet数据的异构图中,它将具有多个值。
- >可以通过计算我认为使用查询的不同谓词数来计算边缘实体:
SELECT DISTINCT (?p AS ?DistinctEdges) { ?s ?p ?o }
但我不知道如何为顶点做到这一点。顶点类型可以来自三元组的主题或对象字段,而对象又可以是值(文字)或其他资源本身。
如果我的词汇在任何地方出错,请原谅。我刚刚开始构建语义Web应用程序。
答案 0 :(得分:2)
您可以使用UNION
子句将两个模式与FILTER
子句结合使用IsLiteral()
函数来省略文字,例如
SELECT DISTINCT ?vertex
WHERE
{
{
?vertex ?p []
}
UNION
{
[] ?p ?vertex
FILTER(!IsLiteral(?vertex))
}
}
[]
是一个匿名变量,因为你不关心UNION
两边的某些位置,所以给它们一个匿名变量,我们匹配任何值,但不在查询中输出这些值。
union的RHS中的FILTER
子句用于过滤掉文字对象。没有必要在LHS中使用它,因为RDF禁止文字主题,因此来自LHS的任何?vertex
值必须是资源,即URI /空白节点