为了表示你在图中所展示的内容,你通常将其视为一种非关系.您应该看看W3C工作说明在语义Web上定义N元关系,但简短版本是您有一个3元关系,并且您正在表达
hasTask(list,1,socks)
hasTask(list,2,shoes)
hasTask(list,3,leash)
Run Code Online (Sandbox Code Playgroud)
对于其中的每一个,您都有一个资源,通常是一个空白节点,但它也可以是一个URI,并且具有将其与各种组件相关联的属性,并且可能是一个类型:
_:rel1 rdf:type :taskItem ;
:hasList :list ;
:hasord 1;
:hasTask :socks .
_:rel2 rdf:type :taskItem ;
:hasList :list ;
:hasord 2;
:hasTask :shoes .
_:rel3 rdf:type :taskItem ;
:hasList :list ;
:hasord 3;
:hasTask :leash .
Run Code Online (Sandbox Code Playgroud)
当然,这里有一些变化.列表可以与每个任务项相关,而不是使具体化的关系具有列表,数字和任务作为属性值.
:list :hasTaskItem [ rdf:type :taskItem ;
:hasord 1;
:hasTask :socks ] ,
[ rdf:type :taskItem ;
:hasord 2;
:hasTask :shoes ] ,
[ rdf:type :taskItem ;
:hasord 3;
:hasTask :leash ] .
Run Code Online (Sandbox Code Playgroud)
但基本思路是一样的.或者,您可以使用列表.在纯RDF中,您可以使用RDF列表并隐含数字,例如:
:list :hasTasks ( :socks :shoes :leash ) .
Run Code Online (Sandbox Code Playgroud)
这只是简写
:list :hasTasks [ rdf:first :socks ;
rdf:rest [ rdf:first :shoes ;
rdf:rest [ rdf:first :leash ;
rdf:rest rdf:nil ]]].
Run Code Online (Sandbox Code Playgroud)
在OWL中,您不能使用rdf:first和rdf:rest,但您可以定义自己的类似属性并实现相同的结构.在我的答案中有一个指定列表类的例子我可以为rdf:List成员指定一个范围吗?(有人想要一个列表,其中所有元素都必须是某种类型).如果您确实采用了这条路线,并且想要恢复列表中每个元素的位置,您实际上可以使用RDF上的SPARQL查询来执行此操作,正如我在回答中所描述的那样是否可以获得该位置SPARQL中RDF集合中的元素?.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |