作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个属性来定义 rdf:Seq
作为 rdfs:range
一个对象:
eg:myProperty a rdf:Property;
rdfs:range rdf:Seq;
.
rdf:Seq
中的元素的类型。 .例如,我不想要这个:
eg:typeOfElement a rdf:Class;
.
eg:somethingElse a rdf:Class;
.
[] eg:myProperty [
a rdf:Seq;
rdf:_1 [a eg:typeOfElement]; # It's the type I want
rdf:_2 [a eg:typeOfElement]; # It's the type I want
rdf:_3 [a eg:somethingElse]; # I don't want this type
];
.
rdf:Seq
元素的类型仅为
eg:typeOfElement
当我定义
eg:myProperty
?
最佳答案
可能有多种方法可以实现这一点,具体取决于您的实现偏好。我的建议是使用 rdf:li
特殊属性代替任意 rdf:_nnn
, 更容易扩展。 rdf:li
相当于rdf:_1
, rdf:_2
为了。所以下面的代码块是等价的:
:mySeq a rdf:Seq;
rdf:_1 :foo;
rdf:_2 :bar .
:mySeq a rdf:Seq;
rdf:li :foo;
rdf:li :bar .
rdf:li
使用新属性并优化其域/范围(尽管这些仅对人类读者真正有意义,因为子属性继承了父属性的语义):
:myItem rdfs:subPropertyOf rdf:li;
rdfs:range :typeOfElement;
rdfs:domain :mySeq .
:myItem
继承
rdf:li
的语义,所以无论你有什么实现逻辑都可以推断出
:myItem
的值以某种有意义的顺序排列。接下来定义
:mySeq
通过属性限制类:
:mySeq rdfs:subClassOf [
a owl:Restriction;
owl:onProperty :myItem;
owl:allValuesFrom :typeOfElement;].
:mySeq
是属性
:myItem
的所有事物的类显式用于
:typeOfElement
的值.您现在可以使用
:mySeq
创建列表.
:mySeq
作为上述规则与
rdf:Seq
的交集:
:mySeq a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
( rdf:Seq
[a owl:Restriction;
owl:onProperty :myItem;
owl:allValuesFrom :typeOfElement ]) ] .
owl:equivalentClass
代替
rdfs:subClassOf
.如果我们对待
owl:equivalentClass
对称并被
rdfs:subClassOf
包含,例如:
owl:equivalentClass a owl:SymmetricProperty .
owl:equivalentClass rdfs:subPropertyOf rdfs:subClassOf .
rdf:Seq
的所有实例
:myItem
的值属于
:typeOfElement
也是
:mySeq
的实例.在这种情况下,您正在推断类型。所以通过声明:
:x a rdf:Seq; :myItem :foo, :bar .
:x a :mySeq
.
关于syntax - 如何在 rdf :Seq? 中定义元素的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529932/
我是一名优秀的程序员,十分优秀!