说我有:
- 属性 1 是可选的
- 始终定义的 Property2
我想定义 TrueProperty 等于:
- 如果 Property1 存在,则为 Property1
- Property2 否则
Property2 否则
我可以这样做吗?我可以在 OWL 中做到这一点吗?
谢谢
你不能在 OWL 中这样做。OWL 并不是要谈论所写的东西,它谈论的是世界上真实的事物。您的数据集中未明确存在的事实可能是正确的。如果你给我发一份你没有提到你的街道地址的简历,我可以断定你是无家可归吗?
然而,有几种方法可以做你想做的事,而无需 OWL。带有 FILTER 的 SPARQL CONSTRUCT 查询,如果您可以推断 Property1 的某些值,则查询推理器,如果不能,则以编程方式添加 Property2。例如:
CONSTRUCT { ?s <TruProperty> ?o }
WHERE {
{ ?s <Property1> ?o }
UNION
{ ?s <Property2> ?o
FILTER NOT EXISTS { ?s <Property1> ?o }
}
}