我需要"注释"一些类通过向它们添加属性。我需要这样做,以便让我的应用程序的视图层提取正确的类。
我所做的是:
创建一个名为 uiProperty 的对象属性,并编辑这些类以使其成为此类的子类:
uiProperty some
所以我的类的最终OWL代码是这样的:
rdfs:subClassOf owebs:RealEstate ,
[ rdf:type owl:Restriction ;
owl:onProperty owebs:uiProperty ;
owl:someValuesFrom owl:Thing
] ;
现在我想构建一个sparql查询来获取这些类。我做了以下事情:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owbes: <http://www.isep.org/desco/2015/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT $uri $label WHERE {
$uri rdfs:subClassOf owbes:RealEstate.
$uri rdfs:subClassOf $x.
$x owl:onProperty owbes:uiProperty.
$uri rdfs:label $label
}
该查询的结果是太多的类。同一个班级重复多次。例如:
为什么会这样? 以及如何解决它?
答案 0 :(得分:4)
我需要通过向它们添加属性来“注释”某些类。我需要 这样做是为了让我的应用程序的视图层提取 正确的课程。
这实际上是注释属性,例如rdfs:label,用于。您可以定义自己的注释属性,然后通过查询更直接地使用SPARQL检索类。例如,这是一个有三个特殊类的本体:
CREATE FUNCTION ufn_Last24Hrs
(
@start DateTime2(7)
)
RETURNS @Result TABLE (d char(10), h int)
AS
BEGIN
DECLARE @current DateTime2(7) = @start
WHILE (@current > DateAdd(hour, -24, @start))
BEGIN
INSERT INTO @Result
VALUES
(
REPLACE(CONVERT(char(10), @current, 102) , '.', '-'),
DATEPART(hour, @current)
)
SET @current = DateAdd(hour, -1, @current)
END
RETURN;
END;
GO
SELECT * FROM ufn_Last24Hrs(SYSDATETIME());
SELECT
d,h,COUNT(1)cnt
FROM
ufn_Last24Hrs(SYSDATETIME()) hrs
left join msgs
ON msgs.d = hrs.d
and msgs.h = hrs.h
WHERE dt>= DateAdd(hour, -24, SYSDATETIME())
GROUP BY d,h
ORDER BY 1 DESC, 2 DES