首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RDFS: subClassOf、type和“多重继承”。

RDFS: subClassOf、type和“多重继承”。
EN

Stack Overflow用户
提问于 2017-10-30 22:13:16
回答 1查看 1.5K关注 0票数 1

安装程序

考虑一下我有两个可执行程序的设计,foobar。假设两者都是subClassOf SW,例如(为了清晰起见,删除大部分前缀):

代码语言:javascript
复制
SW   rdf:type  rdfs:Class

foo   rdf:type  rdfs:Class
foo   rdfs:subClassOf  SW

bar   rdf:type  rdfs:Class
bar   rdfs:subClassOf  SW

使用Jena默认推理器的SPARQLing完成了预期的事情,例如,您可以请求subClassOf SW的所有内容,获取foo和bar,您可以获得超类/子类的所有属性,等等。假设foo和bar是“原子”,也就是说,每个原子只有一个。但他们可能会被部署好几次。我们如何更好地将原子信息与每个实例信息分离?最初,人们可能尝试“单一继承”;下面是两个foo实例

代码语言:javascript
复制
foo_111  rdf:type  rdfs:Class
foo_111  rdfs:subClassOf  foo
foo_222  rdf:type  rdfs:Class
foo_222  rdfs:subClassOf  foo

现在的问题是,当我们要求所有的软件原子(SW)时,我们也会得到它的实例,这不是我们想要的。可能有可能以某种方式过滤掉实例。一种方法可能是使用“标记类”,类似于多重继承:

代码语言:javascript
复制
foo_111  rdf:type  rdfs:Class
foo_111  rdfs:subClassOf  foo
foo_111  rdfs:subClassOf  Instance
foo_222  rdf:type  rdfs:Class
foo_222  rdfs:subClassOf  foo
foo_222  rdfs:subClassOf  Instance

查询将过滤任何类型的实例。

让我们继续探索吧。

另一种方法是让实例是它自己的类,并有一个名为exec的字段,该字段将被激活的事物作为实例引用:

代码语言:javascript
复制
Instance  rdf:type  rdfs:Class
foo_111  rdf:type  rdfs:Class
foo_111  rdfs:subClassOf  Instance
foo_111  exec             foo
foo_222  rdf:type  rdfs:Class
foo_222  rdfs:subClassOf  Instance
foo_222  exec             foo

这是整洁的,因为它干净地将“原子”空间与“实例”空间分开,所有类型的东西都可以成为实例。但是:现在看来我不能为我所有的SW去SPARQL了。

代码语言:javascript
复制
?s rdfs:subClassOf Instance ;
        exec       SW .

我并不感到惊讶,因为类型/子subClassOf机器并没有寻找一个名为exec的属性来发挥它的魔力。请注意,exec的特定值工作良好。

代码语言:javascript
复制
?s rdfs:subClassOf Instance ;
        exec       foo .

但这当然过于严格/具体;我们不能说出每一个可能的软件。

问题

在这个空间中,有什么设计上的最佳实践可以使简单的事情变得简单(例如,“在180天内找到所有的SW原子,如果它产生了6个软件,我们就不想拖进这6个软件的12000个实例中)。”

EN

回答 1

Stack Overflow用户

发布于 2017-11-23 04:40:47

你的概念化是不正确的。对象要么是概念(类),要么是个人,它取决于知识库的粒度。在这种情况下,SW是一个类,foo和bar是SW的子类,foo_111和foo_222是foo类的个体。不要创建类实例。相反,使用rdf:type谓词实例化软件工具,并使用SPARQL过滤器中的rdfs:subclassOf谓词查找所有软件工具。如果需要查询实例,请使用datatype属性捕获唯一标识符,例如软件特定副本的条形码,并查询该属性的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47025002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档