首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python查询中不同的RDF文件计数

python查询中不同的RDF文件计数
EN

Stack Overflow用户
提问于 2021-11-29 10:23:19
回答 1查看 41关注 0票数 0

我有这个rdf .ttl文件示例:@前缀ns1:http://schema.org/。@前缀xsd:http://www.w3.org/2001/XMLSchema#

代码语言:javascript
复制
<http://example.org/crime/100010117.0> ns1:beat "308" ;
    ns1:crime "AUTO_THEFT" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.369307e+01 ;
    ns1:location "960 CONSTITUTION RD SE" ;
    ns1:long -8.435805e+01 ;
    ns1:neighborhood "Norwood Manor" ;
    ns1:npu "Z" ;
    ns1:number 1.000101e+08 .

<http://example.org/crime/100010121.0> ns1:beat "309" ;
    ns1:crime "LARCENY-FROM_VEHICLE" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.368274e+01 ;
    ns1:location "2685 METROPOLITAN PKWY SW" ;
    ns1:long -8.440902e+01 ;
    ns1:neighborhood "Perkerson" ;
    ns1:npu "X" ;
    ns1:number 1.000101e+08 .

<http://example.org/crime/100010127.0> ns1:beat "208" ;
    ns1:crime "LARCENY-FROM_VEHICLE" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.385211e+01 ;
    ns1:location "3600 PIEDMONT RD NE" ;
    ns1:long -8.438044e+01 ;
    ns1:neighborhood "Buckhead Forest" ;
    ns1:npu "B" ;
    ns1:number 1.000101e+08 .

<http://example.org/crime/100010147.0> ns1:beat "512" ;
    ns1:crime "ROBBERY-PEDESTRIAN" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.375104e+01 ;
    ns1:location "FORSYTH ST SW / NELSON ST SW" ;
    ns1:long -8.439479e+01 ;
    ns1:neighborhood "Downtown" ;
    ns1:npu "M" ;
    ns1:number 1.000101e+08 .

<http://example.org/crime/100010149.0> ns1:beat "311" ;
    ns1:crime "BURGLARY-RESIDENCE" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.367399e+01 ;
    ns1:location "2950 SPRINGDALE RD SW" ;
    ns1:long -8.441557e+01 ;
    ns1:neighborhood "Hammond Park" ;
    ns1:npu "X" ;
    ns1:number 1.000101e+08 .

<http://example.org/crime/100010186.0> ns1:beat "501" ;
    ns1:crime "BURGLARY-RESIDENCE" ;
    ns1:date "1/1/2010" ;
    ns1:lat 3.378988e+01 ;
    ns1:location "288 16TH ST NW" ;
    ns1:long -8.439713e+01 ;
    ns1:neighborhood "Home Park" ;
    ns1:npu "E" ;
    ns1:number 1.000102e+08 .

我正在试图计算不同类型的犯罪(NS1:犯罪)

例如,我想要这样的结果

代码语言:javascript
复制
[
    {
        "crime": "AUTO_THEFT",
        "count": 1
    },
    {
        "crime": "LARCENY-FROM_VEHICLE",
        "count": 2
    },
    {
        "crime": "ROBBERY-PEDESTRIAN",
        "count": 1
    },
    {
        "crime": "ROBBERY-PEDESTRIAN",
        "count": 2
    }
]

所以不同类型的犯罪(不同的)和他们的数量。

我试过这样做:

代码语言:javascript
复制
def countTypes(g):
    crimes = []
    q = g.query(
        """
        PREFIX ns1: <http://schema.org/>
            SELECT ?crime (count(distinct ?crime) as ?crimeCount) WHERE {
                ?s ns1:crime ?crime .
            }""")
    for row in q:
        crimes.append(row)
    return crimes

但它不能正常工作。知道怎么做吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-29 13:01:20

您可以使用GROUP BY子句根据犯罪值对结果进行分组,然后使用COUNT (没有不同)来计算每个组中有多少结果:

代码语言:javascript
复制
PREFIX ns1: <http://schema.org/>
SELECT ?crime (count(*) as ?crimeCount) WHERE {
    ?s ns1:crime ?crime .
}
GROUP BY ?crime
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70153034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档