Sparql 查询RDF存储上的子数据属性
在我的本体中,我有一个名为“person”的实体,它有一个名为“member”的类子级。有些是这样的(缩进表示层次结构) 另外,我还有一些属性(dataProperty),与“person”关联,另一个属性与“member”关联。具体来说,这些属性可以是电话号码。我以这种方式提出了属性的层次结构Sparql 查询RDF存储上的子数据属性,sparql,rdf,owl,ontology,rdfs,Sparql,Rdf,Owl,Ontology,Rdfs,在我的本体中,我有一个名为“person”的实体,它有一个名为“member”的类子级。有些是这样的(缩进表示层次结构) 另外,我还有一些属性(dataProperty),与“person”关联,另一个属性与“member”关联。具体来说,这些属性可以是电话号码。我以这种方式提出了属性的层次结构 phone (domain: person) office-phone (domain: member) office-phone-1 (domain: member)
phone (domain: person)
office-phone (domain: member)
office-phone-1 (domain: member)
office-phone-2 (domain: member)
personal-phone (domain: person)
我在做下面的事情
SELECT ?s ?attr ?data
WHERE
{
value ?attr {:phone} .
?s rdf:type :member .
?s ?attr ?data .
}
要获取所有电话号码
instance-member :phone "value-of-personal-phone"
instance-member :phone "value-of-office-phone-1"
instance-member :phone "value-of-office-phone-2"
但是,
如果不使用特定属性“:office phone”,我怎么可能只获取两个office phone??一些猫头鹰:限制还是定义
谢谢 首先,您必须在数据中使用属性层次结构,否则,这将无法工作(如果您下次提供适当的示例数据,这将是一件好事…):
首先,您必须在数据中使用属性层次结构,否则,这将无法工作(如果您下次提供适当的示例数据,这将是一件好事…):
…我以类似的方式得到它,显示了超属性,限制了域,包括一个独特的
SELECT distinct ?s ?attr_father ?data
WHERE
{
values ?attr_father {:phone} .
?s rdf:type :member .
?attr rdfs:subPropertyOf* ?attr_father .
?attr rdfs:domain :member .
?s ?attr ?data .
}
这样我们就得到
instance-member :phone "value-of-office-phone-1" .
instance-member :phone "value-of-office-phone-2" .
问候 …我以类似的方式得到它,显示了超属性,限制了域并包含了一个独特的
SELECT distinct ?s ?attr_father ?data
WHERE
{
values ?attr_father {:phone} .
?s rdf:type :member .
?attr rdfs:subPropertyOf* ?attr_father .
?attr rdfs:domain :member .
?s ?attr ?data .
}
这样我们就得到
instance-member :phone "value-of-office-phone-1" .
instance-member :phone "value-of-office-phone-2" .
问候 对于示例数据,这不起作用。实际上,您必须首先在数据中使用特定的子属性。然后,您可以使用SPARQL查询,该查询只考虑
office phone
的子属性。在当前数据中,这只反映在文本字符串中,而不能根据属性层次结构信息查询任何内容。我希望你能理解。根据你的样本数据,这是行不通的。实际上,您必须首先在数据中使用特定的子属性。然后,您可以使用SPARQL查询,该查询只考虑office phone
的子属性。在当前数据中,这只反映在文本字符串中,而不能根据属性层次结构信息查询任何内容。我希望你能理解……我同意。。。我忘了包括一个样本数据。。。很抱歉,非常感谢,但是它们与您解释的方式相同(以及在我的本体中定义的层次结构)。但是,我的问题是“…不使用:办公室电话…”如果使用此dataProperty,则不需要包含三个”?attr rdfs:subpertyof*?p。“;这将是我首先包含的同一个sparql,我得到了“office phone”的孩子们……问题是只使用超级属性“phone”让属性亲属到“member”类。。。谢谢同意。。。我忘了包括一个样本数据。。。很抱歉,非常感谢,但是它们与您解释的方式相同(以及在我的本体中定义的层次结构)。但是,我的问题是“…不使用:办公室电话…”如果使用此dataProperty,则不需要包含三个”?attr rdfs:subpertyof*?p。“;这将是我首先包含的同一个sparql,我得到了“office phone”的孩子们……问题是只使用超级属性“phone”让属性亲属到“member”类。。。谢谢好的,但是你的问题没有反映出你想要什么,特别是你展示的样本数据,这些数据在这里不适用于你的查询,而且还远远没有完成。我不明白为什么三重:instance member:personalPhone“value of personal phone”。
不会随您的查询一起返回……因此,在域限制的情况下,查询是以这种方式工作的(使用您编写的数据样本…另一次,很抱歉忘记编写它们)。如果在查询中删除此三元组,则会得到第三个结果“实例成员:personal phone的personal phone值”。。。当做好的,但是你的问题没有反映出你想要什么,特别是你展示的样本数据,这些数据在这里不适用于你的查询,而且还远远没有完成。我不明白为什么三重:instance member:personalPhone“value of personal phone”。
不会随您的查询一起返回……因此,在域限制的情况下,查询是以这种方式工作的(使用您编写的数据样本…另一次,很抱歉忘记编写它们)。如果在查询中删除此三元组,则会得到第三个结果“实例成员:personal phone的personal phone值”。。。当做
instance-member :phone "value-of-office-phone-1" .
instance-member :phone "value-of-office-phone-2" .