Sparql 在turtle或RDF中,我可以在所有符合条件的主语上添加谓词/宾语吗?
我正在做一些实验,导入海龟语言中的三元组 在Tomcat中的openrdf工作台webapp中,它包含了一个SPARQL端点 我想知道,对于turtle,或者一般来说,在RDF/RDFS中,是否可以有条件地将所有(隐式)主语上的某个谓词/对象声明添加到另一个谓词/对象的存在中 例如,如果定义了以下三元组:Sparql 在turtle或RDF中,我可以在所有符合条件的主语上添加谓词/宾语吗?,sparql,rdf,semantic-web,triplestore,turtle-rdf,Sparql,Rdf,Semantic Web,Triplestore,Turtle Rdf,我正在做一些实验,导入海龟语言中的三元组 在Tomcat中的openrdf工作台webapp中,它包含了一个SPARQL端点 我想知道,对于turtle,或者一般来说,在RDF/RDFS中,是否可以有条件地将所有(隐式)主语上的某个谓词/对象声明添加到另一个谓词/对象的存在中 例如,如果定义了以下三元组: foo:a foo:b foo:c foo:d foo:b foo:c foo:e foo:b foo:c foo:f foo:b foo:c 我想自动将以下谓词/主语添加到与谓词=foo:
foo:a foo:b foo:c
foo:d foo:b foo:c
foo:e foo:b foo:c
foo:f foo:b foo:c
我想自动将以下谓词/主语添加到与谓词=foo:b
和object=foo:c
匹配的所有主语中:
(implicit subject) foo:g foo:h
为了自动生成以下三元组:
foo:a foo:g foo:h
foo:d foo:g foo:h
foo:e foo:g foo:h
foo:f foo:g foo:h
这可能吗
或者:有没有办法定义一些三元组,以便SPARQL在查询将foo:g foo:h
作为谓词/对象的主题时能够找到foo:a/d/e/f
问题的第一部分可以通过以下两种方式之一解决:
PREFIX foo: <http://example.org/foo#>
INSERT
{
?x foo:g foo:h .
}
WHERE
{
?x foo:b foo:c .
}
您可以使用OWL和以下形式的公理进行这种类型的推理 p值a&sq亚组;q值b 也就是说,如果某个东西的属性p的值是a,那么它的属性q的值也是b。作为一个例子,这里有一个本体,有四个个体(a、b、c、d)、两个对象属性(p、q)和公理(pvaluec&sqsubsetq;qvalued)
@前缀:。
@前缀rdfs:。
@前缀owl:。
@前缀xsd:。
@前缀rdf:。
猫头鹰:本体论。
:p一个owl:ObjectProperty。
:q a owl:ObjectProperty。
[猫头鹰:限制;
owl:onProperty:p;
owl:hasValue:c;
rdfs:子类[a owl:限制;
owl:onProperty:q;
猫头鹰:hasValue:d].]。
:猫头鹰:东西,猫头鹰:名字个人;:p:c。
:b猫头鹰:东西,猫头鹰:名字个人;:p:c。
:c猫头鹰:东西,猫头鹰:名字个人。
:d一只猫头鹰:东西,猫头鹰:名字。
在Protégé中,公理如下:
您可以启用推理器并查询q值d
的实例,请参见:
或者,您可以浏览到个人并查看结果:
非常感谢您的回答。是否可以使用OWL来定义这种推理?如果你能举个例子,我将不胜感激。此外,SPARQL能够对OWL声明进行推断吗?在OWL中,可以使用一个公理:
(b值c)subassof(g值h)
。这意味着,如果某个东西将c
作为属性b
的值,那么它也将h
作为属性g
@JoshuaTaylor的值,非常感谢您的回答。你知道如何或者是否有可能通过RDF三元组来表达这个公理吗?是的,我添加了一个答案,在Protege中显示了结果,并对本体进行了序列化。复制于。
PREFIX foo: <http://example.org/foo#>
SELECT ?x
WHERE
{
?x foo:g foo:h .
}
@prefix : <http://example.org/add-predicate-object#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://example.org/add-predicate-object> a owl:Ontology .
:p a owl:ObjectProperty .
:q a owl:ObjectProperty .
[ a owl:Restriction ;
owl:onProperty :p ;
owl:hasValue :c ;
rdfs:subClassOf [ a owl:Restriction ;
owl:onProperty :q ;
owl:hasValue :d ] . ] .
:a a owl:Thing, owl:NamedIndividual ; :p :c .
:b a owl:Thing, owl:NamedIndividual ; :p :c .
:c a owl:Thing, owl:NamedIndividual .
:d a owl:Thing, owl:NamedIndividual .