[英]Is it possible to insert a rdfs:subClassOf triple into a datastore?
我有一個有點奇怪的查詢,它一直在困擾我。 我有一個應用程序,我需要動態生成子概念(owl:subClassOf)並將它們存儲在數據集中,以便可以動態地實例化個體。 下面的代碼片段生成一個名為“Arduino”的新概念,它是另一個本體概念的子類。
datafeed:Arduino rdfs:subClassOf ssn:System.
我嘗試使用JENA將其插入到我的TDB數據存儲區中。 我沒有錯,但我不確定這是否正確。 我們可以將子類插入數據存儲區,還是只能包含個體(即類的實例)的數據存儲區? 對於這個問題,我似乎在腦子里四處奔走。 我嘗試了各種SPARQL查詢,但如果上面的三元組存儲在數據集中,我似乎無法解決。 我嘗試了以下查詢,以查看該概念是否存儲在數據集中,但它沒有返回任何結果:
SELECT ?concept
WHERE {
?concept a owl:Class.
}
這讓我相信結果只會返回給個人,而不是類別定義...?
這一切都在我的頭腦中混亂。 如果有人能夠糾正我的理解,那就太棒了。
最好的祝福
Jena(或者我所知道的任何三重店)都存儲了你添加到它的所有三元組。 你的三元組是否涉及rdfs:subClassOf
關系沒有任何區別。
它是否對您存儲的數據執行任何形式的推理是另一回事。 這取決於您使用的工具和您選擇的配置。 您所做的查詢假設已經發生了某種形式的推理: datafeed:Arduino
將只是一個owl:Class
因為如果啟用了推理,則插入rdfs:subClassOf
三元組(即使這樣,它也會默認只推斷它是rdfs:Class
的一個實例,不一定是owl:Class
)。
在不依賴於推理的情況下,測試插入三元組的一種萬無一失的方法是實際查詢特定的三元組,而不是其隱含的后果,如下所示:
SELECT ?concept
WHERE { ?concept rdfs:subClassOf ssn:System . }
這將返回作為ssn:System
的子類的所有概念 - 如果你的三元組被正確插入, datafeed:Arduino
將在結果中。
或者,甚至可能更簡單:
ASK WHERE { datafeed:Arduino rdfs:subClassOf ssn:System . }
如果商店中存在三元組,則返回true
否則返回false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.