簡體   English   中英

是否可以將rdfs:subClassOf三元組插入數據存儲區?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM