假设我有以下Turtle声明:
@prefix : <http://example.org#> .
:ls :list (:a :b :c)
Run Code Online (Sandbox Code Playgroud)
有没有办法获得集合中元素的位置?
例如,使用此查询:
PREFIX : <http://example.org#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?elem WHERE {
?x :list ?ls .
?ls rdf:rest*/rdf:first ?elem .
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
--------
| elem |
========
| :a |
| :b |
| :c |
--------
Run Code Online (Sandbox Code Playgroud)
但我想要一个查询来获取:
--------------
| elem | pos |
==============
| :a | 0 |
| :b | 1 |
| :c | 2 |
--------------
Run Code Online (Sandbox Code Playgroud)
可能吗?
我是RDF的新手,我有一个关于RDF的问题.
使用一些简单的句子:"Ann study Math",使用RDF表示它没有问题.
但是更复杂的句子如:" 帕克先生教授机器学习并使用名为ML-for-newbie的书 ",我的意思是帕克先生用这本书来准备他的讲座.有三个对象:Parker先生,机器学习,ML-for-newbie ; 2谓词:教导,使用.那么如何在RDF中表示这句话呢?据我所知,一个RDF语句就像Subject --predicate - > Object,而3个对象和2个谓词让我感到困惑:(
Plz帮助,谢谢!
我有一个简单的本体如下
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY assignment "http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#" >
]>
<rdf:RDF xmlns="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#"
xml:base="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:assignment="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<owl:Ontology rdf:about="http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Object Properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#channel_of -->
<owl:ObjectProperty rdf:about="&assignment;channel_of">
<rdfs:domain rdf:resource="&assignment;Channels"/>
<rdfs:range rdf:resource="&assignment;Television"/>
<owl:inverseOf rdf:resource="&assignment;has_channels"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_channels -->
<owl:ObjectProperty rdf:about="&assignment;has_channels">
<rdfs:range rdf:resource="&assignment;Channels"/>
<rdfs:domain rdf:resource="&assignment;Television"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_inet_connection -->
<owl:ObjectProperty rdf:about="&assignment;has_inet_connection">
<rdfs:range rdf:resource="&assignment;InternetConnection"/>
<rdfs:domain rdf:resource="&assignment;Person"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/shadowman/ontologies/2013/5/assignment#has_television …Run Code Online (Sandbox Code Playgroud) 我无法在我的Ontology中表达以下情况:
假设我有四个人投票和四个投票(因此投票和选民之间存在一对一的映射).人们可以投票赞成或反对.如果我知道三人投票的结果,我应该能够推断出第四人的投票.
重申一下:约翰,鲍勃,玛丽和卡罗尔各自投票.由于有四个人有四票.投票结果是一个平局(2是,2没有).后来推理者确定Bob和John投了反对票.然后推理者应该能够推断出玛丽和卡罗尔的选票是肯定的.
目前我正在使用Jena的java api构建我的本体,并使用Jena推理器进行推理,所以我宁愿使用Jena支持的规则/语义.
如果我想说某事的标题应该是rdfs:Literal,我这样做:
example:title a owl:DatatypeProperty ;
rdfs:range rdfs:Literal .
Run Code Online (Sandbox Code Playgroud)
现在我想表达一些东西有一个有序的标题列表:
example:titles a rdf:List .
Run Code Online (Sandbox Code Playgroud)
如何指定列表成员应该是什么?我需要子类rdf:List吗?
更新:我想继续使用rdf:List,如果可能,根据Joshua的回答我认为以下说任何rdf:List只有rdfs:Literal值是一个例子:ListOfLiterals,然后我可以用它作为一个范围.
@prefix entity: <http://example.com/stuff/> .
@prefix example: <http://example.com/my/term/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
example:ListOfLiterals a owl:Class ;
owl:equivalentClass [
a owl:Class ;
owl:intersectionOf (
rdf:List
[
a owl:Restriction ;
owl:allValuesFrom rdfs:Literal ;
owl:onProperty rdf:first
]
[
a owl:Restriction ;
owl:allValuesFrom example:ListOfLiterals ;
owl:onProperty rdf:rest
] )
] .
example:Book a owl:Class .
example:titles a owl:DatatypeProperty ;
rdfs:domain example:Book …Run Code Online (Sandbox Code Playgroud)