【发布时间】:2017-07-02 15:34:43
【问题描述】:
我已将披萨本体加载到 Stardog 和 Blazegraph 中,以及我编写的一些三元组,包括一个有四种配料的披萨。正如@AKSW 建议的那样,我试图使浇头与众不同。
披萨本体将有趣的披萨定义为具有至少三种配料的披萨。我很确定我启用了 OWL 推理,但Triplestore 都没有说我的披萨很有趣。
谁能告诉我在任何免费提供的三元存储中启用此推理的设置,或者指出我的三元存储做错了什么? 特别是,我是否应该能够推断出披萨实例、披萨类或两者都是“有趣的”?
有趣的比萨定义:
pizza:InterestingPizza rdf:type owl:Class ;
owl:equivalentClass [ owl:intersectionOf ( pizza:Pizza
[ rdf:type owl:Restriction ;
owl:onProperty pizza:hasTopping ;
owl:minCardinality "3"^^xsd:nonNegativeInteger
]
) ;
rdf:type owl:Class
] ;
rdfs:label "PizzaInteressante"@pt .
我的其他三元组:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#> .
<http://www.co-ode.org/ontologies/pizza/pizza.owl#marksPizzaClass>
a owl:Class ;
owl:equivalentClass [
a owl:Restriction ;
owl:onProperty <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasTopping> ;
owl:someValuesFrom <http://www.co-ode.org/ontologies/pizza/pizza.owl#CaperTopping>
], [
a owl:Restriction ;
owl:onProperty <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasTopping> ;
owl:someValuesFrom <http://www.co-ode.org/ontologies/pizza/pizza.owl#JalapenoPepperTopping>
], [
a owl:Restriction ;
owl:onProperty <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasTopping> ;
owl:someValuesFrom <http://www.co-ode.org/ontologies/pizza/pizza.owl#LeekTopping>
], [
a owl:Restriction ;
owl:onProperty <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasTopping> ;
owl:someValuesFrom <http://www.co-ode.org/ontologies/pizza/pizza.owl#MozzarellaTopping>
], [
a owl:Restriction ;
owl:onProperty <http://www.co-ode.org/ontologies/pizza/pizza.owl#hasTopping> ;
owl:someValuesFrom <http://www.co-ode.org/ontologies/pizza/pizza.owl#PineKernels>
] ;
rdfs:subClassOf <http://www.co-ode.org/ontologies/pizza/pizza.owl#Pizza> ;
rdfs:label "mark's pizza class" .
<http://www.co-ode.org/ontologies/pizza/pizza.owl#marksPizzaClassMember>
a owl:NamedIndividual, <http://www.co-ode.org/ontologies/pizza/pizza.owl#marksPizzaClass> ;
rdfs:label "a member of the mark's pizza class" .
<http://www.co-ode.org/ontologies/pizza/pizza.owl#marksPizzaInstance>
a owl:NamedIndividual, <http://www.co-ode.org/ontologies/pizza/pizza.owl#Pizza> ;
pizza:hasTopping pizza:marksPeppers, pizza:topping1, pizza:topping2, pizza:topping3, pizza:topping4 ;
rdfs:label "mark's pizza instance" .
pizza:marksPeppers
a owl:NamedIndividual, pizza:JalapenoPepperTopping ;
rdfs:label "mark's special spicy jalapenos" .
pizza:topping1
a owl:NamedIndividual, pizza:MozzarellaTopping ;
rdfs:label "mark's semi secret topping one" .
pizza:topping2
a owl:NamedIndividual, pizza:PineKernels ;
rdfs:label "mark's semi secret topping two" .
pizza:topping3
a owl:NamedIndividual, pizza:CaperTopping ;
rdfs:label "mark's semi secret topping three" .
pizza:topping4
a owl:NamedIndividual, pizza:LeekTopping ;
rdfs:label "mark's semi secret topping four" .
[]
a owl:AllDifferent ;
owl:distinctMembers (
pizza:marksPeppers
pizza:topping1
pizza:topping2
pizza:topping3
pizza:topping4
) .
查询有关具有五种不同浇头的披萨实例的任何知识:
prefix pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
select *
where
{ pizza:marksPizzaInstance ?p ?o }
Stardog 的结果 (我已手动将完整的 URI 替换为前缀 URI):
+---------------------+----------------------------+
| p | o |
+---------------------+----------------------------+
| pizza:hasIngredient | pizza:topping1 |
| pizza:hasIngredient | pizza:topping2 |
| pizza:hasIngredient | pizza:topping3 |
| pizza:hasIngredient | pizza:topping4 |
| pizza:hasIngredient | pizza:marksPeppers |
| pizza:hasTopping | pizza:topping1 |
| pizza:hasTopping | pizza:topping2 |
| pizza:hasTopping | pizza:topping3 |
| pizza:hasTopping | pizza:topping4 |
| pizza:hasTopping | pizza:marksPeppers |
| rdfs:label | mark's pizza instance |
| rdf:type | owl:Thing |
| rdf:type | pizza:DomainConcept |
| rdf:type | pizza:Food |
| rdf:type | pizza:Pizza |
| rdf:type | pizza:SpicyPizza |
| rdf:type | pizza:SpicyPizzaEquivalent |
| rdf:type | pizza:CheeseyPizza |
| rdf:type | pizza:marksPizzaClass |
+---------------------+----------------------------+
Stardog 已经推断我的比萨有配料(因为它有配料),我的比萨是一种食物,甚至我的比萨是辣的,因为它有马克的墨西哥胡椒作为配料。但它并没有推断出有趣的披萨类的成员资格。
这是我的 Stardog 推理设置:
Reasoning type: SL
Reasoning approximate: ON
SameAs reasoning: FULL
TBox named graph: *
【问题讨论】:
-
嗨,马克。我猜你现在遇到了这样一个事实,即在 OWL 中没有唯一名称假设 (UNA)。这意味着推理者不能从不同的名字假设个体是不同的。因此,您必须使个体明显不同(成对使用
owl:differentFrom,或者更方便地将owl:allDifferent与个体列表一起使用)。在你的情况下,浇头。 -
乌龟里面的东西:
_:x rdf:type owl:AllDifferent . _:x owl:members (:topping1 :topping2 :topping3 :topping4) -
我想知道为什么那些人没有提到这一点——他们都是真正的 OWL 专家。也许他们忽略了
minCardinality,这在使用标准 OWL 推理时主要导致这些问题。 -
不用担心。要知道的一件重要事情:您应该了解不同的推理配置文件 - 不确定您在三重存储中使用了哪一个,但据我所知,只有 Stardog 支持完整的 OWL 推理。见w3.org/TR/owl2-profiles。例如,OWL QL 仅支持
owl:someValuesFrom和owl:Thing作为 SubClassOf 公理中的填充符。这通常也会影响只是语法糖的等价公理。而且一般不支持ObjectMinCardinality。 -
好的,祝你好运,让我知道哪种方式最适合你 :D 我明天会使用 Stardog 推理支持,但我很确定
SL配置文件不会'不包含一些必要的公理。他们的文档指出它是其他配置文件的组合,但缺少详细信息。 PS:在德国,大多数人可能会在一个小时内上床睡觉,但我更喜欢“工作”到午夜或更长时间。不,这是我的私人帐户,但我知道,这个名字有点误导 - 也许我应该在我们的研究小组中分享这些凭据。干杯
标签: sparql jena stardog blazegraph rdf4j