FOAF的SPARQL查询不';我不返回任何结果

FOAF的SPARQL查询不';我不返回任何结果,sparql,foaf,Sparql,Foaf,我想从FOAF本体中获得一些信息。我尝试了以下SPARQL查询,但它没有返回任何结果。我尝试使用此查询来熟悉FOAF,但我真正想做的是查找特定人员?x认识的所有人(使用属性FOAF:knows)。我该怎么做 前缀foaf: 选择?名称?mbox 其中{?x foaf:name?name。 ?x foaf:mbox?mbox。 } 语义网由不同的组件组成 知识表示为RDF三元组。这些三元组基于主谓宾语法描述资源。例如,“John是男性”可以表示为RDF三元组 在RDF之上,我们可以使用RDFS和O

我想从FOAF本体中获得一些信息。我尝试了以下SPARQL查询,但它没有返回任何结果。我尝试使用此查询来熟悉FOAF,但我真正想做的是查找特定人员
?x
认识的所有人(使用属性
FOAF:knows
)。我该怎么做

前缀foaf:
选择?名称?mbox
其中{?x foaf:name?name。
?x foaf:mbox?mbox。
}

语义网由不同的组件组成

知识表示为RDF三元组。这些三元组基于主谓宾语法描述资源。例如,
“John是男性”
可以表示为RDF三元组

在RDF之上,我们可以使用RDFS和OWL来指定这些数据的限制和其他信息。多亏了RDFS,我可以指定
“Male是Person的一个子类”
,因此可以推断
“John是Person”
。RDFS和OWL有助于定义本体。本体是表示数据的词汇表(可以是通用的,也可以是特定于某个领域的)。例如,我可能想创建一个本体CAT来表示CAT上的数据

在这种情况下,我将创建我的猫词汇表,定义
“猫是动物的一个子类”
“hasOwner是一个将猫链接到人的属性”
和一些其他属性。然后,我能够实例化一些个人来创建关于猫的数据。例如,说
“百家乐是一只猫”
“百家乐拥有者约翰”

FOAF基本上是一个词汇表,用来表示人的数据,尤其是这些人之间的联系。FOAF词汇表提供了一些属性和类,以便轻松处理有关人员的信息。但它不提供任何信息,只提供“结构”/“模型”/“模式”来组织信息。 FOAF数据集中没有个人。这就是查询不返回结果的原因。因为FOAF数据集中没有人,所以查询不返回任何内容是正常的

您可能希望基于FOAF词汇表构建自己的RDF数据集。要做到这一点,您可以尝试使用Protégé之类的工具,如果您熟悉RDF/XML或Turtle,还可以更轻松地使用文本编辑器

否则,如果您只需要熟悉FOAF,就可以查询模型。例如,您可能希望获取代理的所有子类:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?c 
WHERE { ?c rdfs:subClassOf foaf:Agent }
前缀rdfs:
前缀foaf:
选择distinct?c
其中{c rdfs:foaf子类:Agent}

在进一步学习FOAF之前,我建议您先阅读一下语义web组件(特别是RDF和RDF,以及它们之间的差异)。另外,学习SPARQL的一个很好的练习是查询DBpedia:。

语义web由不同的组件组成

知识表示为RDF三元组。这些三元组基于主谓宾语法描述资源。例如,
“John是男性”
可以表示为RDF三元组

在RDF之上,我们可以使用RDFS和OWL来指定这些数据的限制和其他信息。多亏了RDFS,我可以指定
“Male是Person的一个子类”
,因此可以推断
“John是Person”
。RDFS和OWL有助于定义本体。本体是表示数据的词汇表(可以是通用的,也可以是特定于某个领域的)。例如,我可能想创建一个本体CAT来表示CAT上的数据

在这种情况下,我将创建我的猫词汇表,定义
“猫是动物的一个子类”
“hasOwner是一个将猫链接到人的属性”
和一些其他属性。然后,我能够实例化一些个人来创建关于猫的数据。例如,说
“百家乐是一只猫”
“百家乐拥有者约翰”

FOAF基本上是一个词汇表,用来表示人的数据,尤其是这些人之间的联系。FOAF词汇表提供了一些属性和类,以便轻松处理有关人员的信息。但它不提供任何信息,只提供“结构”/“模型”/“模式”来组织信息。 FOAF数据集中没有个人。这就是查询不返回结果的原因。因为FOAF数据集中没有人,所以查询不返回任何内容是正常的

您可能希望基于FOAF词汇表构建自己的RDF数据集。要做到这一点,您可以尝试使用Protégé之类的工具,如果您熟悉RDF/XML或Turtle,还可以更轻松地使用文本编辑器

否则,如果您只需要熟悉FOAF,就可以查询模型。例如,您可能希望获取代理的所有子类:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?c 
WHERE { ?c rdfs:subClassOf foaf:Agent }
前缀rdfs:
前缀foaf:
选择distinct?c
其中{c rdfs:foaf子类:Agent}

在进一步学习FOAF之前,我建议您先阅读一下语义web组件(特别是RDF和RDF,以及它们之间的差异)。另外,学习SPARQL的一个很好的练习是查询DBpedia:。

您在哪个知识库上运行查询?FOAF本体本身就是一个模式,我使用了Virtuoso SPARQL查询编辑器,并输入了默认数据集。我错了吗@Aksw在我看来,您只加载了FOAF词汇表,而没有加载任何实例数据。值得注意的是,即使给定了包含此类实例数据的数据集,您的查询也会传递person
?x
?name
?mbox
,并且只有当这两条语句都在您要查询的存储中时,才会加载它们。对于您所描述的目标,您将需要一个非常不同的查询。也许对你有帮助。(免责声明:我的工作,这些教程的来源和。)你是对的,@AKSW。这是因为FOAF只是一个词汇表,它不包含任何实例。您在哪个知识库上运行查询?FOAF本体本身就是一个模式,我使用了Virtuoso SPARQL查询编辑器,并输入了默认数据集。是