【问题标题】:SQWRL Query to Select Difference of Grouped SetsSQWRL 查询以选择分组集的差异
【发布时间】:2018-09-12 02:11:39
【问题描述】:

假设我有这些信息

Individual  |   Sex     |   HairColor
---------------------------------------
Joseph      |   Male    |   Black
Peter       |   Male    |   Black
Kevin       |   Male    |   Blonde
Andrew      |   Male    |   Brown
Boris       |   Male    |   Brown
Chistine    |   Female  |   Black
Julia       |   Female  |   Black
Julieth     |   Female  |   Brown
Judith      |   Female  |   Brown
Mary        |   Female  |   Blonde

我的个体都是不同的。我对每个人都断言了男性和女性的班级。而且我还拥有属性 hasHairColor 以它的值向每个人声明。

问题是,如何查询所有发色不是黑色的男性(本体可能有很多其他发色)?

到目前为止,我已经尝试过这个查询,但结果错误......

1. Male(?x) ^ Male(?y) ^ hasHairColor(?y, "Black") ^ differentFrom(?x, ?y) -> sqwrl:select(?x)
2. Male(?x) ^ Male(?y) ^ hasHairColor(?y, "Black")  .  sqwrl:makeSet(?males, ?x) ^ sqwrl:groupBy(?males, ?x) ^ sqwrl:makeSet(?blacks, ?y) ^ sqwrl:groupBy(?blacks, ?y)  .  sqwrl:notEqual(?males, ?blacks) -> sqwrl:select(?x)
3. Male(?x) ^ Male(?y) ^ hasHairColor(?y, "Black")  .  sqwrl:makeSet(?males, ?x) ^ sqwrl:groupBy(?males, ?x) ^ sqwrl:makeSet(?blacks, ?y) ^ sqwrl:groupBy(?blacks, ?y)  .  sqwrl:difference(?diff, ?males, ?blacks) -> sqwrl:select(?x)

我在连接的方式上遗漏了一些东西。结果有效,但仅当其中一组只有一个元素时(即,如果我尝试移除金发女郎)

我将 Protege 5.2 与 SWRL 和 SQWRL Tab 2.0.5 一起使用

提前致谢

【问题讨论】:

  • differentFrom(?x, ?y) -> 你声明所有个体在你的本体中明确彼此不同?否则,这将不起作用,因为 OWL 不遵循唯一名称假设,即两个不同的名称(相应的 URI)并不一定意味着两者都是不同的实体。
  • 顺便differentFrom(?x, ?y)表示两个人不一样,但这不代表发色不一样。你需要像hasHairColor(?y, ?color), notEquals(?color, "Black") resp 这样的东西。某种否定,不确定这在 SWRL/OWL 中是否可行,请参阅this
  • SPARQL 在这里可以完美运行...
  • 您好,谢谢您的回复。是的,所有个体都明显不同。是的,但我使用 differentFrom 和两个不同的个体集;所有男性列表中的 X 和黑头发男性的 Y。但它在连接比较中做某种分配产品并留下不同之处。 (a, b, c) x (b, c) = (ab, ac, bb, bc, cb, cc) -> 不同的结果是 (ab, ac, bc, cb) 因为比较不同。保留X部分不变(a,b,c)和Y部分不变(b,c)
  • 这个问题仍然悬而未决。我在 sqwrl github 站点中发现并打开了一个问题,您可以通过此链接找到它github.com/protegeproject/swrlapi/issues/43

标签: ontology protege swrl sqwrl


【解决方案1】:

问题仍然悬而未决,但解决方案是使用 SPARQL 来实现我想要的。

如果您需要有关未解决问题的更多信息。你可以在这里找到它 https://github.com/protegeproject/swrlapi/issues/43

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2018-04-01
    • 2014-07-23
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多